2013-12-20 90 views
0

我正在使用由第三方提供的公共API,並且我有一組被定義爲final的對象。在Java中對實現類的最終對象進行排序

該對象有一個方法getName(),它可以讓我檢索對象的字符串名稱。

我需要做的是按名稱排序對象,我最初嘗試做的是擴展原始類以實現Comparable。但那是當我發現它是最終的,因此不可能。

對這裏的術語抱歉... Java的新東西,仍然找到我的方式。請幫我提供替代方法嗎?

感謝,

+5

使用「比較器」。 –

+1

http://docs.oracle.com/javase/tutorial/collections/interfaces/order.html。 –

回答

2

您可以實現自己的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()); 
+0

感謝 - 這工作了一次,我明白,基地集合不是有序列表,不能排序。 – user3123546

1

你將不得不實現你自己的比較器併爲你的收藏使用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()); 

希望它能幫助。