java - 按特定规则对对象的 List<T> 进行排序?

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

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

最佳答案

有两种方式:

  1. Country 实现 java.util.Comparable接口(interface)以在您的 Country 对象上定义一个自然顺序,即让对象本身“知道”它们的顺序。然后您可以使用 Collections.sort(List)或者只是从你的 List 切换到 SortedSet 实现,比如 TreeSet (如果你不需要重复,一个 Set 删除重复项)

  2. 写一个java.util.Comparator定义一个强制排序并调用Collections.sort(List, Comparator)或(再次丢失重复项)使用 new TreeSet(Comparator)

实现这两者之一就足以解决您的问题——ComparableComparator 都可以组合使用,不过:使用 Comparator将覆盖 Comparable 定义的任何自然顺序。

关于java - 按特定规则对对象的 List<T> 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7776822/

相关文章:

java - SortedMultiset 返回对象集合(不仅仅是对象计数)?

java - 添加通用集合排序方法时出错

java - 使用增强的 For 循环在 ArrayList 中打印对象时出现问题

java - 对混合整数和字符串的 ArrayList 进行排序,同时保留字符串和整数的相对顺序

java - 如何在每个句子的末尾添加一个空格?

java - 当子类对象传递给带有父类(super class)参数的方法时会发生什么?

java - Java 中的 While/Do While 循环

java - "Kill"一个打开的JFrame

java - 接受 Collection 的 ArrayList 构造函数

android - 如何通过对象类的ArrayAdapter将手动添加的数据一一显示到ListView中