Java- comparator

To sort the objects in the collection

 

1.Comparator external comparator, you need to create an external object that implements Comparator interface Comparator

/**
 * External comparator
 * Sort by age ascending
 */
class UserComparators implements Comparator<User>{
    @Override
    public int compare(User o1, User o2) {
        if(o1.age > o2.age) {
            return 1;
        }else if(o1.age < o2.age) {
            return -1;
        }
        return 0;
    }
}

public class User{
    int age;
    String name;
    
    public User(int age, String name) {
        super();
        this.age = age;
        this.name = name;
    }
    
    public static void main(String[] args) {
        List<User> list = new ArrayList<>();
        for (int i = 0; i < 12; i++) {
            list.add(new User(new Random().nextInt(210), i+"name"));
        }
        System.out.println(list);
        Collections.sort(list, new UserComparators());
        System.out.println(list);
        
    }

    @Override
    public String toString() {
        return "User [age=" + age + ", name=" + name + "]";
    }
}

 

2.Comparable internal comparator, the comparison needs to be implemented Comparable interface object

public class User implements Comparable<User>{
    int age;
    String name;
    
    public User(int age, String name) {
        this.age = age;
        this.name = name;
    }
    
    public static void main(String[] args) {
        List<User> list = new ArrayList<>();
        for (int i = 0; i < 12; i++) {
            list.add(new User(new Random().nextInt(210), i+"name"));
        }
        System.out.println(list);
        Collections.sort(list);
        System.out.println(list);        
    }
    
    /**
     * Internal comparator
     * Sort by age ascending
     */
    @Override
    public int compareTo(User o) {
        if(this.age > o.age) {
            return 1;
        }else if(this.age < o.age) {
            return -1;
        }
        return 0;
    }

    @Override
    public String toString() {
        return "User [age=" + age + ", name=" + name + "]";
    }
}

 

Guess you like

Origin www.cnblogs.com/jhxxb/p/11837572.html