[英]Java Collections Sorting Hypothetical
我目前是计算机科学专业,正在修读高级java编程课程。 我今天的问题是,如果你有两个相同的列表,让我们称之为list1和list2,你调用Collections.sort(list1)和Collections.sort(list2),这两个列表调用后可能会有所不同吗? 我的教科书说这是可能的,而我的教授说它不是。 有人可以帮我澄清一下吗?
如果我们考虑明显的情况,例如排序List<Integer>
,那么不可能。 如果您要对两个相同的列表进行排序,那么它们当然应该正确排序。
但是,由于Collections.sort()
要求被排序的对象是Comparable
,因此您总是可以很好地实现Comparable
。 例如,你可以让compareTo()
返回一个随机值(或一天中的时间,或者与实际排序的对象无关的任何东西),你不会知道如何对它们进行排序。
Collections.sort()
可以注意到compareTo()
的实现是否错误,并会抛出一个异常,说Comparison method violates its general contract!
。 然而,并非100%保证会注意到这一点,因此从技术上讲 ,可以以不同的方式分类2个相同的集合。
由于Object是由Object.equals()
定义的,但是比较是由Comparable.compareTo()
或Comparator.compare()
定义的,就像javadoc所说:
强烈建议(尽管不要求)自然排序与equals一致。
否则,可能会对不同的元素进行不同的排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.