内置函数式接口-Comparator

Comparator 比较器

【 美 /ˈkɑːmpəˌreɪtər; kəmˈpærətər/】 比较器

Compares its two arguments (o1,o2) for order,Returns a integer。

  • negative integer, first argument is less than the second → <0 o1
  • zero, first argument i, equal to than the second → =0 o1=o2
  • positive integer ,first argument is greater than the second → >0 o1>o2

接口定义

@FunctionalInterface
public interface Comparator<T> {

    int compare(T o1, T o2);
   
    boolean equals(Object obj);

	....
}

顺序 决定 升序降序

顺序相同就升序  
students.sort((o1, o2) -> o1.getScore() - o2.getScore());

顺序相反就降序
students.sort((o1, o2) -> o2.getScore() - o1.getScore());

接口使用

传统方式

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

List<Integer> list = List.of(1, 6, 3, 5, 6, 3, 2, 8);
List<Integer> collect = list.stream().sorted(consumer).toList(); // [1, 2, 3, 3, 5, 6, 6, 8]

lambda表达式

List<Integer> list1 = List.of(1, 6, 3, 5, 6, 3, 2, 8);
List<Integer> integers = list1.stream().sorted((o1, o2) -> o2 - o1).toList(); // [8, 6, 6, 5, 3, 3, 2, 1]

你可能感兴趣的:(JAVA8,开发语言,java)