How to use Java comparator properly?

前端 未结 7 1663
孤街浪徒
孤街浪徒 2020-12-11 05:42

If I have the following class:

public class Employee {
    private int empId;
    private String name;
    private int age;

    public Employee(int empId, S         


        
7条回答
  •  甜味超标
    2020-12-11 06:23

    The Comparator interface defines two methods: compare() and equals().

    The compare() method, compares two elements for order: int compare(Object obj1, Object obj2)

    obj1 and obj2 are the objects to be compared. This method returns zero if the objects are equal. It returns a positive value if obj1 is greater than obj2. Otherwise, a negative value is returned.

    By overriding compare(), you can alter the way that objects are ordered. For example, to sort in a reverse order, you can create a comparator that reverses the outcome of a comparison.

    The equals() method, tests whether an object equals the invoking comparator: boolean equals(Object obj)

    obj is the object to be tested for equality. The method returns true if obj and the invoking object are both Comparator objects and use the same ordering. Otherwise, it returns false.

    Example:

    import java.util.*;
    
    class Dog implements Comparator, Comparable {
       private String name;
       private int age;
       Dog() {
       }
    
       Dog(String n, int a) {
          name = n;
          age = a;
       }
    
       public String getDogName() {
          return name;
       }
    
       public int getDogAge() {
          return age;
       }
    
       // Overriding the compareTo method
       public int compareTo(Dog d) {
          return (this.name).compareTo(d.name);
       }
    
       // Overriding the compare method to sort the age 
       public int compare(Dog d, Dog d1) {
          return d.age - d1.age;
       }
    }
    
    public class Example {
    
       public static void main(String args[]) {
          // Takes a list o Dog objects
          List list = new ArrayList();
    
          list.add(new Dog("Shaggy", 3));
          list.add(new Dog("Lacy", 2));
          list.add(new Dog("Roger", 10));
          list.add(new Dog("Tommy", 4));
          list.add(new Dog("Tammy", 1));
          Collections.sort(list);   // Sorts the array list
    
          for(Dog a: list)   // printing the sorted list of names
             System.out.print(a.getDogName() + ", ");
    
          // Sorts the array list using comparator
          Collections.sort(list, new Dog());
          System.out.println(" ");
    
          for(Dog a: list)   // printing the sorted list of ages
             System.out.print(a.getDogName() +"  : "+ a.getDogAge() + ", ");
       }
    }
    

    Check it out for more Java Comparator examples.

提交回复
热议问题