將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)。 –