最近看了Jdk1.8流式数据,看到了comparable接口,同时想到了comparator,霎时间懵逼了,因为这个一直觉得比较混淆。但是在看了各种大佬的博客之后,才慢慢领悟过来,人们口中说的“内部比较器“和“外部比较器”是个什么东东,一下是我的一个小例子,应该是很浅显易懂的:
Person1实现了Comparable接口,内部比较器,需要自身override接口的方法
package collections;
public class Person1 implements Comparable<Person1> {
private String name;
private int age;
public Person1(String name, int age) {
this.name = name; this.age = age;
}
@Override public int compareTo(Person1 p) {
return this.age-p.age;
}
}
实现Comparator接口,外部比较器,不用自身override接口的方法,全部都包含在Collections,方法体里面
Collections.sort(list2,new Comparator<Person2>(){
@Override public int compare(Person2 p1, Person2 p2) {
if(p1 == null || p2 == null){
return 0;
}
return p1.getAge()-p2.getAge();
}
});