カスタムコンパレータでCollections.sortカスタムコンパレータを持つCollections.sort()は、すべてのペア(a、b)の比較(a、b)と比較(b、a)を行いますか
java.lang.IllegalArgumentException: Comparison method violates its general contract!
このエラーについてグーグルで後comapareは、(a、b)は私を与えた場合、私が言ったいくつかの説明を参照してください-1と比較(bは、a)のも、私は-1、私はこのエラーが表示されます提供します。
なぜ2回比較しているのか分かりません。
コンパレータを修正するだけです。 'compare'呼び出しの正確なシーケンスを調べることで、ソートルーチンがあなたを助けることはありません。ソートは出力がソートされていればどんな比較をしてもかまいません。さまざまなJavaのバージョンと実装では異なる処理が行われます。 – user2357112
私はコンパレータに問題があることを理解しています。私はちょうど各ペアの比較が2回以上起こるかどうかを理解しようとしています – user3344591
それはすべてのペアで起こることはありません。それはO(n^2)の比較であり、Collections.sortはO(n log n)です。 –