我正在使用由第三方提供的公共API,並且我有一組被定義爲final的對象。在Java中對實現類的最終對象進行排序
該對象有一個方法getName(),它可以讓我檢索對象的字符串名稱。
我需要做的是按名稱排序對象,我最初嘗試做的是擴展原始類以實現Comparable。但那是當我發現它是最終的,因此不可能。
對這裏的術語抱歉... Java的新東西,仍然找到我的方式。請幫我提供替代方法嗎?
感謝,
我正在使用由第三方提供的公共API,並且我有一組被定義爲final的對象。在Java中對實現類的最終對象進行排序
該對象有一個方法getName(),它可以讓我檢索對象的字符串名稱。
我需要做的是按名稱排序對象,我最初嘗試做的是擴展原始類以實現Comparable。但那是當我發現它是最終的,因此不可能。
對這裏的術語抱歉... Java的新東西,仍然找到我的方式。請幫我提供替代方法嗎?
感謝,
您可以實現自己的Comparator
無需擴展類,並把它作爲Collections.sort
參數:
public class MyComparator implements Comparator<MyClass> {
@Override
int compate (MyClass a, MyClass b) {
// null handling removed for clarity's sake
// add it if you need it
return a.getName().compareTo(b.getName());
}
}
而現在只需要使用它:
List<MyClass> myList = ...;
Collections.sort (myList, new MyComparator());
感謝 - 這工作了一次,我明白,基地集合不是有序列表,不能排序。 – user3123546
你將不得不實現你自己的比較器併爲你的收藏使用Collections.sort。事情是這樣的:
class CustomComparator implements Comparator<YourObject> {
@Override
public int compare(YourObject o1, YourObject o2) {
return o1.getName().compareTo(o2.getName());
}
}
然後使用比較器作爲
Collections.sort(yourCollection,new CustomComparator());
希望它能幫助。
使用「比較器」。 –
http://docs.oracle.com/javase/tutorial/collections/interfaces/order.html。 –