按特定规则对对象列表<t>进行排序?</t>

时间:2011-10-15 08:57:04

标签: java collections arraylist

我有这个清单:

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

我希望使用方法getCountry()按名称对国家进行排序。 怎么能实现这个目标?

更新:

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

你能说出如何比较它们以使它按字符串排序吗? 阿根廷, 奥地利, 巴西等。

3 个答案:

答案 0 :(得分: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)

  3. 实现这两个中的一个足以解决您的问题 - ComparableComparator都可以合并,但是:使用Comparator将覆盖Comparable定义的任何自然顺序1}}。

答案 1 :(得分:3)

您可以调用Collections.sort(),提供比较getCountry()的Comparator。

答案 2 :(得分:3)

使用内置的sort method 并确保在国家/地区

上实施comparable