目录
- 什么地方用到比较器
- 集合排序
- 自定义类字段排序
- JDK8中比较器新增了什么方法?
- reversed
<一> 什么地方用到比较器
1> 集合排序
public class Main{
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(4);
list.add(2);
list.add(5);
list.add(3);
// list.sort(new Comparator<Integer>(){
// @Override
// public int compare(Integer o1, Integer o2) {
// return o1-o2;
// }
// });
Comparator<Integer> comparator = (a,b)->a-b;
list.sort(comparator);
}
}
2> 自定义类集合指定字段排序
public class Main{
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
list.add(new Student("A",10,90));
list.add(new Student("B",16,98));
list.add(new Student("C",30,92));
list.add(new Student("D",21,95));
list.add(new Student("E",32,91));
list.sort((a,b)->a.getAge()-b.getAge());
Comparator<Student> comparator = (a,b)->a.getAge()-b.getAge();
comparator.compare(list.get(0),list.get(1));
}
}
<二> JDK8中比较器新增了什么方法?
该方法为借口中的默认方法,在JDK1.8之后,允许在接口中实现方法。
public class Main{
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
list.add(new Student("A",10,90));
list.add(new Student("B",16,98));
list.add(new Student("C",30,92));
list.add(new Student("D",21,95));
list.add(new Student("E",32,91));
list.sort((a,b)->a.getAge()-b.getAge());
Comparator<Student> comparator = (a,b)->a.getAge()-b.getAge();
//比较器判断逻辑取反
comparator.reversed().compare(list.get(0),list.get(1));
}
}