Comparator.compare() および Comparable.compareTo() 実装にある問題を報告します。
次のケースが報告されます。
0 を返さないことが明らかである。 このような比較メソッドは契約に違反しており、等しい要素に遭遇すると予測できない結果を引き起こす可能性があります。 特に、データによっては並べ替えが例外を伴って失敗する場合があります。Integer.MIN_VALUE を返している。 契約で許されていますが、一部の呼び出しサイトは比較メソッドの戻り値を単項マイナス演算子を使用して誤って反転しようとする場合があるため、エラーが発生しやすい場合があります。
Integer.MIN_VALUE の否定された値は Integer.MIN_VALUE です。
例:
Comparator<String> lambda =
(a, b) -> a.length() > b.length()
? 0
: Math.random() > 0.5 ? -1 : 1;