Java类问题
在C ++中,如果我们向vector添加一些类对象,我们可以通过指定一些函数来对列表进行排序,例如operator<()或operator ==()或operator!=。
我们需要在java中为Collections.sort做什么才能按照我们的意愿工作
答案 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