将Collections.sort()与自定义比较器一起使用时,具有自定义比较器的Collections.sort()是否对每对(a,b)进行比较(a,b)和比较(b,a)
java.lang.IllegalArgumentException: Comparison method violates its general contract!
Google上搜寻有关此错误后,我看到若干问题的解释是说,如果comapare(A,b)给我-1和比较(b,A)也给了我-1,那么我会看到这个错误。
我不明白为什么比较会发生两次?
只需修复您的比较器。找出排序例程所做的“比较”调用的确切顺序不会对你有所帮助;只要输出结果是排序的,排序就可以随意进行任何比较,而不同的Java版本和实现可以完成不同的事情。 – user2357112
我知道我的比较器有问题。我只是试图了解比较是否每次都发生一次以上 – user3344591
对于每一对都不会发生;那就是O(n^2)比较,Collections.sort是O(n log n)。 –