【问题标题】:Collections.sort in java for any class任何类的Java中的Collections.sort
【发布时间】:2011-07-26 13:34:33
【问题描述】:

Java类问题

在 C++ 中,如果我们向 vector 添加一些类对象,我们可以通过指定一些函数来对列表进行排序,例如 operator

我们需要在 java 中做什么才能使 Collections.sort 按照我们的意愿工作

【问题讨论】:

    标签: java class sorting collections


    【解决方案1】:

    你实现Comparable<T>

    来自Collections.sort 的文档:

    根据其元素的自然顺序将指定列表按升序排序。列表中的所有元素都必须实现 Comparable 接口。此外,列表中的所有元素必须相互可比较(即,e1.compareTo(e2) 不得为列表中的任何元素 e1 和 e2 抛出 ClassCastException)。

    或者,如果您控制元素类型(例如,您有一个 List<String> 并且您想要应用自定义排序顺序),您可以实现 Comparator<T> 并将其传入作为Collections.sort的额外参数

    【讨论】:

    • 我不明白为什么该方法的 javadoc 不是人们检查以找到答案的第一个地方!
    • 实现一个基本的Comparator 应该在Java的FAQ部分。
    【解决方案2】:

    您的类需要实现Comparable 接口才能使sort 工作。

    【讨论】:

      【解决方案3】:

      让你的类实现Comparable接口

      【讨论】:

        【解决方案4】:

        您需要编写一个Comparator - 通常您只需覆盖返回一个int、+ve、0 或-ve 的比较方法,以表示“大于”、“相同”或“小于”任何定义您选择的这些。例如,请参阅我的另一个 answers

        【讨论】:

          【解决方案5】:

          您可以实现 Comparable,也可以将 Comparator 传递给 Collections.sort

          【讨论】:

            猜你喜欢
            • 2013-02-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-01-18
            • 2013-05-01
            • 2010-10-19
            • 2011-02-22
            • 2012-08-25
            相关资源
            最近更新 更多