Few employee objects are saved in arraylist. Will try to sort these element either by Employee name or Employee salary. I have created 2 java files: Employee.java, SortEmployee.java in same package.
package com.chetasmind.listPackage; public class Employee { private int empID; private String empName; private double empSalary; public Employee() { } public Employee(int empID,String empName,double empSalary) { this.empID = empID; this.empName = empName; this.empSalary = empSalary; } public int getEmpID() { return empID; } public void setEmpID(int empID) { this.empID = empID; } public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName; } public double getEmpSalary() { return empSalary; } public void setEmpSalary(double empSalary) { this.empSalary = empSalary; } @Override public String toString() { String empDetails = "Employee ID: "+this.empID+" Employee Name: "+this.empName+" Salary="+this.empSalary; return empDetails; } }
package com.chetasmind.listPackage; import java.util.ArrayList; import java.util.Comparator; class SalaryComparator implements Comparator<Employee>{ @Override public int compare(Employee o1, Employee o2) { if(o1.getEmpSalary() > o2.getEmpSalary()) return 1; else if(o1.getEmpSalary() < o2.getEmpSalary()) return -1; else return 0; } } class NameComparator implements Comparator<Employee>{ @Override public int compare(Employee o1, Employee o2) { return o1.getEmpName().compareTo(o2.getEmpName()); } } public class SortEmployee { public static void main(String[] args) { ArrayList<Employee>obj = new ArrayList<>(); Employee emp1 = new Employee(101,"Sagar",45000); Employee emp2 = new Employee(102,"Rekha",85000); Employee emp3 = new Employee(103,"Suhas",35000); Employee emp4 = new Employee(104,"Kavya",80000); obj.add(emp1); obj.add(emp2); obj.add(emp3); obj.add(emp4); System.out.println("Displaying Arraylist element before sorting"); for(int i=0;i<obj.size();i++) { System.out.println(obj.get(i)); } String compareUsing = "salary"; if(compareUsing.equals("salary")) obj.sort(new SalaryComparator()); else obj.sort(new NameComparator()); System.out.println("Displaying Arraylist element after sorting"); for(int i=0;i<obj.size();i++) { System.out.println(obj.get(i)); } } }
SalaryComparator class implements Comparator interface. So, you must write compare method. This compare method accepts 2 Employee object: Employee o1, Employee o2. This method compares these object based on salary and passes the integer value. Same case with NameComparator class. This compares the employee name.
In line no: 48, i have created a String literal compareUsing = “salary”; You can change this value to compare using name. Output of above code is as shown below.
Displaying Arraylist element before sorting
Employee ID: 101 Employee Name: Sagar Salary=45000.0
Employee ID: 102 Employee Name: Rekha Salary=85000.0
Employee ID: 103 Employee Name: Suhas Salary=35000.0
Employee ID: 104 Employee Name: Kavya Salary=80000.0
Displaying Arraylist element after sorting
Employee ID: 103 Employee Name: Suhas Salary=35000.0
Employee ID: 101 Employee Name: Sagar Salary=45000.0
Employee ID: 104 Employee Name: Kavya Salary=80000.0
Employee ID: 102 Employee Name: Rekha Salary=85000.0
The above application is also present in my github repository.
If you are writing java applications for the first time, refer my Project structure article.