上の図は「Alibaba Java Development Manual v1.2.0」の記述です。以下は平等状況が処理されていないという反例ですが、私は次のように考えています。 リーリー
逆ではないですかリーリー
私は普段このように使っていますが、この場所のテクニックを説明してもらえますか?理由は何ですか?给我你的怀抱2017-05-27 17:42:39
さらに理解すると、問題の根本原因は、JDK7 のソート実装が TimSort に変更されたことです。詳細については、この記事を参照してください。
http://blog.2baxb.me/archives...
最初に回答させていただいた際、質問者の意図がよく理解できず、少し急ぎ回答してしまいましたことをお詫び申し上げます。
以前の回答の内容はオフラインで分割されています。回答コメントで古い回答についての議論があるため、問題を認識させてくれた @wanghaa に感謝します。
上記のコードは -1 を出力します。比較された 2 つの値が等しい場合、0 を返すのは間違いであるため、等しい状況は個別に処理する必要があります。
世界只因有你2017-05-27 17:42:39
@gemoji の議論を経て、ようやく理解できました:
JDK7 より前のバージョンでは、Effective Java で述べられているように、Comparator はイコールの実装に必須ではありません
JDK7 以降のバージョンでは、TimSort がソートに使用されます。 . アルゴリズム。結果として、Comparator は次と等しいものを実装する必要があります。
<<Effective Java Chinese Version>> 実際、これは、推移性
と等価性と比較の対称性