開發者學堂課程【Java 進階程式設計:Comparator 比較器】學習筆記,與課程緊密聯系,讓使用者快速學習知識。
課程位址:
https://developer.aliyun.com/learning/course/20/detail/362Comparator 比較器
内容介紹:
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):
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SN5ADN3M2MjVmN4QTM4UGO4YDO0E2YjVDNxYzM0E2Y48CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
在 java.util.Comparator 裡面最初隻定義有一個排序的 compar()方法
(public int compare(T o1.T o2)),
但是後來持續發展,又定義了許多 static 方法。
面試題:
Comparable 與 Comparator 的差別?
l java.lang.Comparable 是在類定義的時候實作的父接口,主要用于定義排序規則,裡面隻有 compareTo()方法。
l java.util.Comparator 是挽救的比較器操作,需要設罝單獨的比較器規則類實作排序,裡面有compare()方法。