84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
上の図は「Alibaba Java Development Manual v1.2.0」の記述です。以下は平等状況が処理されていないという反例ですが、私は次のように考えています。 リーリー
リーリー
学习是最好的投资!
さらに理解すると、問題の根本原因は、JDK7 のソート実装が TimSort に変更されたことです。詳細については、この記事を参照してください。 http://blog.2baxb.me/archives...
最初に回答させていただいた際、質問者の意図がよく理解できず、少し急ぎ回答してしまいましたことをお詫び申し上げます。 以前の回答の内容はオフラインで分割されています。回答コメントで古い回答についての議論があるため、問題を認識させてくれた @wanghaa に感謝します。
上記のコードは -1 を出力します。比較された 2 つの値が等しい場合、0 を返すのは間違いであるため、等しい状況は個別に処理する必要があります。
0に等しい場合に判定します
@gemoji の議論を経て、ようやく理解できました: JDK7 より前のバージョンでは、Effective Java で述べられているように、Comparator はイコールの実装に必須ではありません JDK7 以降のバージョンでは、TimSort がソートに使用されます。 . アルゴリズム。結果として、Comparator は次と等しいものを実装する必要があります。
<<Effective Java Chinese Version>> 実際、これは、推移性 と等価性と比較の対称性
さらに理解すると、問題の根本原因は、JDK7 のソート実装が TimSort に変更されたことです。詳細については、この記事を参照してください。
http://blog.2baxb.me/archives...
最初に回答させていただいた際、質問者の意図がよく理解できず、少し急ぎ回答してしまいましたことをお詫び申し上げます。
以前の回答の内容はオフラインで分割されています。回答コメントで古い回答についての議論があるため、問題を認識させてくれた @wanghaa に感謝します。
リーリー
上記のコードは -1 を出力します。比較された 2 つの値が等しい場合、0 を返すのは間違いであるため、等しい状況は個別に処理する必要があります。
0に等しい場合に判定します
@gemoji の議論を経て、ようやく理解できました:
JDK7 より前のバージョンでは、Effective Java で述べられているように、Comparator はイコールの実装に必須ではありません
JDK7 以降のバージョンでは、TimSort がソートに使用されます。 . アルゴリズム。結果として、Comparator は次と等しいものを実装する必要があります。
<<Effective Java Chinese Version>> 実際、これは、推移性
を破壊するという強力な提案です。と等価性と比較の対称性