【发布时间】:2011-07-26 13:34:33
【问题描述】:
Java类问题
在 C++ 中,如果我们向 vector 添加一些类对象,我们可以通过指定一些函数来对列表进行排序,例如 operator
我们需要在 java 中做什么才能使 Collections.sort 按照我们的意愿工作
【问题讨论】:
标签: java class sorting collections
Java类问题
在 C++ 中,如果我们向 vector 添加一些类对象,我们可以通过指定一些函数来对列表进行排序,例如 operator
我们需要在 java 中做什么才能使 Collections.sort 按照我们的意愿工作
【问题讨论】:
标签: java class sorting collections
来自Collections.sort 的文档:
根据其元素的自然顺序将指定列表按升序排序。列表中的所有元素都必须实现 Comparable 接口。此外,列表中的所有元素必须相互可比较(即,e1.compareTo(e2) 不得为列表中的任何元素 e1 和 e2 抛出 ClassCastException)。
或者,如果您不控制元素类型(例如,您有一个 List<String> 并且您想要应用自定义排序顺序),您可以实现 Comparator<T> 并将其传入作为Collections.sort的额外参数
【讨论】:
Comparator 应该在Java的FAQ部分。
您的类需要实现Comparable 接口才能使sort 工作。
【讨论】:
让你的类实现Comparable接口
【讨论】:
您需要编写一个Comparator - 通常您只需覆盖返回一个int、+ve、0 或-ve 的比较方法,以表示“大于”、“相同”或“小于”任何定义您选择的这些。例如,请参阅我的另一个 answers。
【讨论】:
您可以实现 Comparable,也可以将 Comparator 传递给 Collections.sort
【讨论】: