繁体   English   中英

Java集合排序假设

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM