【问题标题】:Java: How do I sort an ArrayList according to a natural ordering?Java:如何根据自然顺序对 ArrayList 进行排序?
【发布时间】:2010-09-24 01:22:02
【问题描述】:

我有一个我创建的类的实例的 ArrayList,每个实例都包含一个带字符串的字段。我已经在我创建的类中实现了 Comparable。如何对数组列表进行排序?

【问题讨论】:

  • 您可以将您的对象添加到SortedSet,例如TreeSet,然后集合将保持它们的排序。

标签: java sorting arraylist


【解决方案1】:

Collections.sort

编辑
对我来说没有错误

class Gene {
}
class MyGene extends Gene implements Comparable<MyGene> {
    public int compareTo(MyGene o) {
        throw new UnsupportedOperationException("Method is not implemented yet.");
    }
}

...

    List<MyGene> l = new ArrayList<MyGene>();
    Collections.sort(l);

【讨论】:

  • 这似乎应该可以工作,除了 Eclipse 抱怨说,“推断的类型 [myClass] 不是有界参数的有效替代品>”跨度>
  • @Trevor 你应该像 class MyClass implements Comparable 这样定义类,它会告诉编译器 MyClass 只能与其他 MyClass 实例进行比较。
  • 我目前确实有 MyClass 以这种方式实现 MyClass。
  • @Trevor 你能发布它的声明吗?
  • public final class MyGene extends Gene implements Comparable {
【解决方案2】:

或者您可以使用 Java 8 API:

List<MyGene> l = new ArrayList<MyGene>();
l.stream().sorted().collect(toList());

通常,你会使用类似的东西:

 List<MyGene> l = new ArrayList<MyGene>();
 l.stream().sorted((o1, o2) -> o2.getId().compareTo(o1.getId())).collect(toList());

, 但是由于您的 MyGene 已经实现了类似的功能,因此简单的 sorted() 就足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 2019-12-20
    • 2013-01-08
    • 2011-03-01
    • 2019-12-01
    • 1970-01-01
    • 2019-02-20
    相关资源
    最近更新 更多