开发者学堂课程【Java 高级编程:Comparator 比较器】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/20/detail/362
Comparator 比较器
内容介绍:
1.基于 Comparator 的排序处理
2. Comparable 与 Comparator 的区别
Comparator 属于一种挽救的比较器支持,其主要的目的是解决一些没有使用 Comparable 排序的类的对象数组排序。
范例:现在程序项目己经开发完成了,并且由于先期的设计并没有去考虑到所谓的比较器功能。
Class Person
private String nane;
private int age;
public Person( String name, int age) {
this.name = name;
this.age = age;
}
@Override
publie int comparelo(Person per) {
return this.age-per,age;
}
@Override
public String StringtoString( ) {
Return “[Person类对象]姓名,”+this.name+“年龄”+this.age +“\n”;
}
publie class JavaAPIDDemo {
Public static void main(String[ ] args) throw Exception {
Person data [ ] = new Person[ ] {
new Person("小强-A ",80);
new Person("小强-B ",50);
new Person("小强-C",100);
Arrays.sort(data,new Personcomparator( ) );
System.out.println( Arrays.toString(data));
}
}
class Personcomparator implements Comparator<Person> {
public int compare(Person pl, Person p2) {
return pi.getAge() - p2.getAge();
}
}
后来经过了若干版本的迭代更新之后发现需要对 Person 类进行排序处理,但是又不能够去修改 Person 类(无法实现 Compparable 接口),所以这个时候就需要采用一种挽救的形式来实现比较,在 Arravs 类里面排序有另外一种实现。
基于 Comparator 的排序处理:
public static<T-voidsort(TIa. Comparator-super T>c):
在 java.util.Comparator 里面最初只定义有一个排序的 compar()方法(public int compare(T o1.T o2)),
但是后来持续发展,又定义了许多 static 方法。
面试题:
Comparable 与 Comparator 的区别?
l java.lang.Comparable 是在类定义的时候实现的父接口,主要用于定义排序规则,里面只有 compareTo()方法。
l java.util.Comparator 是挽救的比较器操作,需要设罝单独的比较器规则类实现排序,里面有compare()方法。