Four implementations of Comparator

new Comparator<Integer>() {
    
    
	@Override
	public int compare(Integer o1, Integer o2) {
    
    
		return o2 - o1;
	}
}

new Comparator<Student>() {
    
    
    @Override
    public int compare(Student o1, Student o2) {
    
    
        // 先按照年龄升序
        Integer i = o1.getAge().compareTo(o2.getAge());
        if (i == 0) {
    
    
            // 如果年龄相等,则按照分数升序
            i = o1.getScore().compareTo(o2.getScore());
            if (i == 0) {
    
    
                // 如果分数相等,则按照姓名升序
                i = o1.getName().compareTo(o2.getName());
            }
        }
        return i;
    }
}
(o1, o2) -> {
    
    
    // 先按照年龄升序
    Integer i = o1.getAge().compareTo(o2.getAge());
    if (i == 0) {
    
    
        // 如果年龄相等,则按照分数升序
        i = o1.getScore().compareTo(o2.getScore());
        if (i == 0) {
    
    
            // 如果分数相等,则按照姓名升序
            i = o1.getName().compareTo(o2.getName());
        }
    }
    return i;
}

(a, b) -> a.compareTo(b)                          升序
(a, b) -> b.compareTo(a)                          降序
(a, b) -> a.getName().compareTo(b.getName())
(a, b) -> a - b  
Integer::compareTo                                默认升序
Comparator.naturalOrder()                         升序
Comparator.reverseOrder()                         降序
Comparator.comparing(e -> e.getName())
Comparator.comparing(Student::getName)
Comparator.comparingInt(Student::getAge)

Guess you like

Origin blog.csdn.net/weixin_37646636/article/details/132699044