任何类的java中的Collections.sort

时间:2011-07-26 13:34:34

标签: java class sorting collections

Java类问题

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

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

5 个答案:

答案 0 :(得分:8)

您实施Comparable<T>

来自Collections.sort的文档:

  

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

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

答案 1 :(得分:3)

您的课程需要实施Comparable界面才能使sort正常工作。

答案 2 :(得分:2)

让您的类实现Comparable接口

答案 3 :(得分:2)

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

答案 4 :(得分:1)

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