2011-10-15 51 views
1

我有這樣的名單:排序列表按特定規則的對象<T>?

List<Country> countryList = new ArrayList<Country>(); 

我想國家通過他們的名字,利用該方法getCountry()排序。 怎樣才能做到這一點?

UPDATE:

public class Country implements Comparable 
@Override 
public int compareTo(Object another) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

你能告訴如何對它們進行比較,以得到它的字符串排序? 阿根廷, 奧地利, 巴西等

+3

爲您更新,你可以使用仿製藥'Comparable'如此,相反,你應該實現可比'',然後你將有'的compareTo(其他國家)'。從那裏,你有兩個對象,然後可以執行比較。 – jbrookover

+0

感謝您對這個答覆 – Carnal

回答

4

有兩種方式:

  1. Country實現java.util.Comparable界面來定義你的Country一個自然排序對象,即讓對象自己「知道」他們的順序。然後,您可以使用Collections.sort(List)或從您的List只需切換到SortedSet實現像TreeSet(如果你不需要重複,一個Set滴式兩份)

  2. java.util.Comparator定義一個實行訂貨,並呼籲Collections.sort(List, Comparator)或(再次丟失重複)去new TreeSet(Comparator)

實現這兩個中的一個,就足以解決你的問題 - 既ComparableComparator可以結合,但:使用Comparator將覆蓋Comparable定義的自然排序。

+1

+1,好詳細的解答 –

3

你可以調用Collections.sort()提供比較getCountry()的比較器。