JAVA - 【Comparator】JDK8中比較器中新增的方法

目錄

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章