【问题标题】:Sort List<T> of objects by a particular rule?按特定规则对对象的 List<T> 进行排序?
【发布时间】:2011-10-15 08:57:03
【问题描述】:

我有这个清单:

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;
}

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

【问题讨论】:

  • 对于您的更新,您可以在Comparable 中使用泛型,因此,您应该实现Comparable&lt;Country&gt;,然后您将拥有compareTo(Country other)。从那里,您有两个对象,但是可以实现比较。
  • 感谢您的回复

标签: java collections arraylist


【解决方案1】:

有两种方式:

  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 定义的任何自然顺序。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      使用内置的sort method 并确保在 Country 上实现 comparable

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-15
        • 2012-08-22
        • 2011-08-05
        • 2020-08-03
        • 2011-05-16
        • 2017-01-12
        相关资源
        最近更新 更多