2011-10-15 52 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()的比较器。