Posted in

How to sort Employee object in java using lambda expression?

1- Sort by name (ascending)

package com.learnwithrup;

public class Employee {
	private int id;
	private String name;
	private String job;
	private double salary;

	public Employee(int id, String name, String job, double salary) {
		super();
		this.id = id;
		this.name = name;
		this.job = job;
		this.salary = salary;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getJob() {
		return job;
	}

	public void setJob(String job) {
		this.job = job;
	}

	public double getSalary() {
		return salary;
	}

	public void setSalary(double salary) {
		this.salary = salary;
	}

	@Override
	public String toString() {
		return "Employee [id=" + id + ", name=" + name + ", job=" + job
				+ ", salary=" + salary + "]";
	}

}
package com.learnwithrup;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class EmployeeSortExample1 {
	public static void main(String[] args) {
		List<Employee> employees = new ArrayList<>();
		employees.add(new Employee(1, "nisha patel", "developer", 50000));
		employees.add(new Employee(2, "arjun rao", "designer", 55000));
		employees.add(new Employee(3, "rahul sharma", "manager", 60000));
		employees.add(new Employee(4, "vikas gupta", "analyst", 52000));
		employees.add(new Employee(5, "rohan khanna", "tester", 48000));
		employees.add(new Employee(6, "deepak mishra", "developer", 50500));
		List<Employee> sortedEmployees = employees.stream()
				.sorted(Comparator.comparing(Employee::getName)).toList();
		sortedEmployees.forEach(System.out::println);
	}
}

Output:

Employee [eid=2, eName=arjun rao, job=designer, salary=55000.0]
Employee [eid=6, eName=deepak mishra, job=developer, salary=50500.0]
Employee [eid=1, eName=nisha patel, job=developer, salary=50000.0]
Employee [eid=3, eName=rahul sharma, job=manager, salary=60000.0]
Employee [eid=5, eName=rohan khanna, job=tester, salary=48000.0]
Employee [eid=4, eName=vikas gupta, job=analyst, salary=52000.0]

2- Sort by name (descending)

package com.learnwithrup;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class EmployeeSortExample1 {
	public static void main(String[] args) {
		List<Employee> employees = new ArrayList<>();
		employees.add(new Employee(1, "nisha patel", "developer", 50000));
		employees.add(new Employee(2, "arjun rao", "designer", 55000));
		employees.add(new Employee(3, "rahul sharma", "manager", 60000));
		employees.add(new Employee(4, "vikas gupta", "analyst", 52000));
		employees.add(new Employee(5, "rohan khanna", "tester", 48000));
		employees.add(new Employee(6, "deepak mishra", "developer", 50500));
		List<Employee> sortedEmployees = employees.stream()
				.sorted(Comparator.comparing(Employee::getName).reversed())
				.toList();
		sortedEmployees.forEach(System.out::println);
	}
}

Output:

Employee [eid=4, eName=vikas gupta, job=analyst, salary=52000.0]
Employee [eid=5, eName=rohan khanna, job=tester, salary=48000.0]
Employee [eid=3, eName=rahul sharma, job=manager, salary=60000.0]
Employee [eid=1, eName=nisha patel, job=developer, salary=50000.0]
Employee [eid=6, eName=deepak mishra, job=developer, salary=50500.0]
Employee [eid=2, eName=arjun rao, job=designer, salary=55000.0]

3- Sort by name with null values (ascending & descending)

package com.learnwithrup;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class EmployeeSortExample2 {
	public static void main(String[] args) {
		List<Employee> employees = new ArrayList<>();
		employees.add(new Employee(1, "nisha patel", "developer", 50000));
		employees.add(new Employee(2, "arjun rao", "designer", 55000));
		employees.add(new Employee(3, "rahul sharma", "manager", 60000));
		employees.add(new Employee(4, "priyanka chopra", "analyst", 52000));
		employees.add(new Employee(5, "rohan khanna", "tester", 48000));
		employees.add(new Employee(6, null, "developer", 50500));
		employees.add(new Employee(7, "amit agarwal", "designer", 55500));
		employees.add(new Employee(8, null, "manager", 60500));
		employees.add(new Employee(9, "vikas gupta", "analyst", 52500));
		// ascendingOrderByName
		List<Employee> ascendingOrderByName = employees.stream()
				.sorted(Comparator.comparing(Employee::getName,
						Comparator.nullsLast(Comparator.naturalOrder())))
				.toList();
		// descendingOrderByName
		List<Employee> descendingOrderByName = employees
				.stream().sorted(
						Comparator
								.comparing(Employee::getName,
										Comparator.nullsLast(
												Comparator.naturalOrder()))
								.reversed())
				.toList();
		ascendingOrderByName.forEach(System.out::println);
		System.out.println("----------------------------------------------");
		descendingOrderByName.forEach(System.out::println);
	}
}

Output:

Employee [id=7, name=amit agarwal, job=designer, salary=55500.0]
Employee [id=2, name=arjun rao, job=designer, salary=55000.0]
Employee [id=1, name=nisha patel, job=developer, salary=50000.0]
Employee [id=4, name=priyanka chopra, job=analyst, salary=52000.0]
Employee [id=3, name=rahul sharma, job=manager, salary=60000.0]
Employee [id=5, name=rohan khanna, job=tester, salary=48000.0]
Employee [id=9, name=vikas gupta, job=analyst, salary=52500.0]
Employee [id=6, name=null, job=developer, salary=50500.0]
Employee [id=8, name=null, job=manager, salary=60500.0]
----------------------------------------------
Employee [id=6, name=null, job=developer, salary=50500.0]
Employee [id=8, name=null, job=manager, salary=60500.0]
Employee [id=9, name=vikas gupta, job=analyst, salary=52500.0]
Employee [id=5, name=rohan khanna, job=tester, salary=48000.0]
Employee [id=3, name=rahul sharma, job=manager, salary=60000.0]
Employee [id=4, name=priyanka chopra, job=analyst, salary=52000.0]
Employee [id=1, name=nisha patel, job=developer, salary=50000.0]
Employee [id=2, name=arjun rao, job=designer, salary=55000.0]
Employee [id=7, name=amit agarwal, job=designer, salary=55500.0]

4- Sort by Salary (Ascending & Descending)

package com.learnwithrup;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class EmployeeSortExample3 {
	public static void main(String[] args) {
		List<Employee> employees = new ArrayList<>();
		employees.add(new Employee(1, "nisha patel", "developer", 50000));
		employees.add(new Employee(2, "arjun rao", "designer", 55000));
		employees.add(new Employee(3, "rahul sharma", "manager", 60000));
		employees.add(new Employee(4, "vikas gupta", "analyst", 52000));
		employees.add(new Employee(5, "rohan khanna", "tester", 48000));
		employees.add(new Employee(6, "deepak mishra", "developer", 50500));
		// ascendingOrderBySalary
		List<Employee> ascendingOrderBySalary = employees.stream()
				.sorted(Comparator.comparing(Employee::getSalary)).toList();
		// descendingOrderSalary
		List<Employee> descendingOrderSalary = employees.stream()
				.sorted(Comparator.comparing(Employee::getSalary).reversed())
				.toList();
		ascendingOrderBySalary.forEach(System.out::println);
		System.out.println("----------------------------------------------");
		descendingOrderSalary.forEach(System.out::println);
	}
}

Output:

Employee [id=5, name=rohan khanna, job=tester, salary=48000.0]
Employee [id=1, name=nisha patel, job=developer, salary=50000.0]
Employee [id=6, name=deepak mishra, job=developer, salary=50500.0]
Employee [id=4, name=vikas gupta, job=analyst, salary=52000.0]
Employee [id=2, name=arjun rao, job=designer, salary=55000.0]
Employee [id=3, name=rahul sharma, job=manager, salary=60000.0]
----------------------------------------------
Employee [id=3, name=rahul sharma, job=manager, salary=60000.0]
Employee [id=2, name=arjun rao, job=designer, salary=55000.0]
Employee [id=4, name=vikas gupta, job=analyst, salary=52000.0]
Employee [id=6, name=deepak mishra, job=developer, salary=50500.0]
Employee [id=1, name=nisha patel, job=developer, salary=50000.0]
Employee [id=5, name=rohan khanna, job=tester, salary=48000.0]

5- Sort by name and salary (Ascending & Descending)

package com.learnwithrup;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class EmployeeSortExample4 {
	public static void main(String[] args) {
		List<Employee> employees = new ArrayList<>();
		employees.add(new Employee(1, "nisha patel", "developer", 50000));
		employees.add(new Employee(2, "arjun rao", "designer", 55000));
		employees.add(new Employee(3, "rahul sharma", "manager", 60000));
		employees.add(new Employee(4, "vikas gupta", "analyst", 52000));
		employees.add(new Employee(5, "rohan khanna", "tester", 48000));
		employees.add(new Employee(6, "deepak mishra", "developer", 50500));
		// ascendingOrderBySalary
		List<Employee> ascendingOrderBySalary = employees.stream()
				.sorted(Comparator.comparing(Employee::getName)
						.thenComparing(Employee::getSalary))
				.toList();
		// descendingOrderSalary
		List<Employee> descendingOrderSalary = employees.stream()
				.sorted(Comparator.comparing(Employee::getName)
						.thenComparing(Employee::getSalary).reversed())
				.toList();
		ascendingOrderBySalary.forEach(System.out::println);
		System.out.println("----------------------------------------------");
		descendingOrderSalary.forEach(System.out::println);
	}
}

Output:

Employee [id=2, name=arjun rao, job=designer, salary=55000.0]
Employee [id=6, name=deepak mishra, job=developer, salary=50500.0]
Employee [id=1, name=nisha patel, job=developer, salary=50000.0]
Employee [id=3, name=rahul sharma, job=manager, salary=60000.0]
Employee [id=5, name=rohan khanna, job=tester, salary=48000.0]
Employee [id=4, name=vikas gupta, job=analyst, salary=52000.0]
----------------------------------------------
Employee [id=4, name=vikas gupta, job=analyst, salary=52000.0]
Employee [id=5, name=rohan khanna, job=tester, salary=48000.0]
Employee [id=3, name=rahul sharma, job=manager, salary=60000.0]
Employee [id=1, name=nisha patel, job=developer, salary=50000.0]
Employee [id=6, name=deepak mishra, job=developer, salary=50500.0]
Employee [id=2, name=arjun rao, job=designer, salary=55000.0]

Leave a Reply

Your email address will not be published. Required fields are marked *