天天看點

Comparator 比較器|學習筆記

開發者學堂課程【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):

Comparator 比較器|學習筆記

在 java.util.Comparator 裡面最初隻定義有一個排序的 compar()方法​

(public int compare(T o1.T o2)),

但是後來持續發展,又定義了許多 static 方法。

面試題:

Comparable 與 Comparator 的差別?

l java.lang.Comparable 是在類定義的時候實作的父接口,主要用于定義排序規則,裡面隻有 compareTo()方法。

l java.util.Comparator 是挽救的比較器操作,需要設罝單獨的比較器規則類實作排序,裡面有compare()方法。