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));
	}
}

 

 

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