Collections.sort(intervals, new Comparator<Interval>(){
@Override
public int compare(Interval obj0, Interval obj1) {
return obj0.start - obj1.start;
}
});
爲什麼重寫此比較函數可以使Collections.sort方法起作用? 謝謝。替代集合排序
Collections.sort(intervals, new Comparator<Interval>(){
@Override
public int compare(Interval obj0, Interval obj1) {
return obj0.start - obj1.start;
}
});
爲什麼重寫此比較函數可以使Collections.sort方法起作用? 謝謝。替代集合排序
爲什麼重寫這個比較函數可以使Collections.sort()方法 有效嗎?
Collections.sort(list)
僅適用於執行Comparable
的類,例如,類,如Integer
,String
等
現在,假設你有class Apple
,如下圖所示:
public class Apple {
private int weight;
private String name;
private String countryOfOrigin;
//getters and setters
}
那麼,現在假設你要比較Apple
類型的對象,但怎麼做Collections.sort()
知道你想通過weight
或name
或其他東西進行比較。那麼,你可以定義Comparator
(或Comparable
)對象來告訴我要按重量或名稱進行比較等。
比較器是一個接口,所以sort函數實現了這個接口? –
PepperGo
public static void更多... sort(List list,Comparator super T> c) –
PepperGo
如果你問你爲什麼需要提供一個Comparator,那麼這是因爲Interval沒有*自然順序*,或因爲您想按不同的順序排序。閱讀['Comparable']的javadoc(https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html)以瞭解* natural ordering *的描述。換言之,這是因爲['sort()']的版本(https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#sort-java.util.List - )不需要「比較器」,要求該類具有自然順序,即實現「可比較」。 – Andreas