Java Comparator interface is used to order the user-defined class objects, compare() method, collection.
Approach: Sort on a single field (Name)
Example 1:
Output: [[Employee [name=Aman, age=36], Employee [name=Jeetu, age=26], Employee [name=Jitu, age=36], Employee [name=Ram, age=23], Employee [name=Shyam, age=25]]]
import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.List;public class JavaComparator {public static void main(String[] args) {List<Employee> list = new ArrayList<Employee>();list.add(new Employee("Ram", 23));list.add(new Employee("Shyam", 25));list.add(new Employee("Jeetu", 26));list.add(new Employee("Aman", 36));list.add(new Employee("Jitu", 36));Collections.sort(list, new EmployeeNameComparator());System.out.println(Arrays.asList(list));}}class EmployeeNameComparator implements Comparator<Employee> {@Overridepublic int compare(Employee o1, Employee o2) {return o1.name.compareTo(o2.name);}}class Employee {String name;int age;public Employee(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Employee [name=" + name + ", age=" + age + "]";}}
Approach: Sort on a single field (Age)
Example 1:
Output: [[Employee [name=Jitu, age=14], Employee [name=Ram, age=23], Employee [name=Shyam, age=25], Employee [name=Jeetu, age=26], Employee [name=Aman, age=36]]]
import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.List;public class JavaComparator {public static void main(String[] args) {List<Employee> list = new ArrayList<Employee>();list.add(new Employee("Ram", 23));list.add(new Employee("Shyam", 25));list.add(new Employee("Jeetu", 26));list.add(new Employee("Aman", 36));list.add(new Employee("Jitu", 14));Collections.sort(list, new EmployeeAgeComparator());System.out.println(Arrays.asList(list));}}class EmployeeAgeComparator implements Comparator<Employee> {@Overridepublic int compare(Employee o1, Employee o2) {return o1.age - o2.age;}}class Employee {String name;int age;public Employee(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Employee [name=" + name + ", age=" + age + "]";}}
Approach: Sort on both fields (Name and Age)
Example 1:
Output: [[Employee [name=Aamn, age=14], Employee [name=Aman, age=36], Employee [name=Jeetu, age=26], Employee [name=Ram, age=25], Employee [name=Ram Singh, age=23]]]
import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.List;public class JavaComparator {public static void main(String[] args) {List<Employee> list = new ArrayList<Employee>();list.add(new Employee("Ram Singh", 23));list.add(new Employee("Ram", 25));list.add(new Employee("Jeetu", 26));list.add(new Employee("Aman", 36));list.add(new Employee("Aamn", 14));Collections.sort(list, new EmployeeAgeNameComparator());System.out.println(Arrays.asList(list));}}class EmployeeAgeNameComparator implements Comparator<Employee> {@Overridepublic int compare(Employee o1, Employee o2) {int name=o1.name.compareTo(o2.name);if (name!= 0)return name;elsereturn o1.age - o2.age;}}class Employee {String name;int age;public Employee(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Employee [name=" + name + ", age=" + age + "]";}}
Approach: Sort on both fields (Name and Age) using chain comparator.
Example 1:
Output: [[Employee [name=Aamn, age=14], Employee [name=Aman, age=36], Employee [name=Jeetu, age=26], Employee [name=Ram, age=25], Employee [name=Ram Singh, age=23]]]
import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.List;public class JavaComparator {public static void main(String[] args) {List<Employee> list = new ArrayList<Employee>();list.add(new Employee("Ram Singh", 23));list.add(new Employee("Ram", 25));list.add(new Employee("Jeetu", 26));list.add(new Employee("Aman", 36));list.add(new Employee("Aamn", 14));// using chain comparatorCollections.sort(list, new EmployeeNameComparator().thenComparing(new EmployeeAgeComparator()));System.out.println(Arrays.asList(list));}}class EmployeeAgeComparator implements Comparator<Employee> {@Overridepublic int compare(Employee o1, Employee o2) {return o1.age - o2.age;}}class EmployeeNameComparator implements Comparator<Employee> {@Overridepublic int compare(Employee o1, Employee o2) {return o1.name.compareTo(o2.name);}}class Employee {String name;int age;public Employee(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Employee [name=" + name + ", age=" + age + "]";}}
No comments:
Post a Comment