目錄
- 什麼地方用到比較器
- 集合排序
- 自定義類字段排序
- 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));
}
}