比較方式は一般的な契約に違反する!
2022-02-25 19:01:26
プロジェクト実行中に例外が発生しました。 Comparison メソッドが一般的な契約に違反している! という例外があり、その理由はネットで調べても比較的はっきりしています。
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 > o2 ? 1 : -1;// the wrong way
}
});
コードの書き方をチェックすること自体が問題で、4行目は o1 == o2 の場合を考慮していません。
JDK6では正常に動作しますが、JDK7では上記の例外が発生する可能性があります。
その理由は これは、基盤となるJDK7のソートアルゴリズムが変更され、新しいアルゴリズムが以下の制約を満たす必要があるためです。
sgn(compare(x, y)) == -sgn(compare(y, x))
簡単に言うと、「等号が指定されている場合は0を返さなければならない」ということです。
神様のおかげで、CSDNブログの閲覧元は以下の通りです。
取得元:https://www.cnblogs.com/LionheartCGJ/p/7754437.html
関連
-
! 拒否]マスター->マスター(フェッチファースト)問題の解決法
-
JavaScriptで不正なappendChildを解決する方法
-
ternsflow AttributeError: __enter__
-
WSLubuntuでESP8266のIDF版をビルドすると、「AttributeError: 'module' object has no attribute 'SSL_ST_INIT' 」というエラーが発生します。
-
警告 基数パラメータradixの欠落:基数パラメータradixの欠落
-
python prompts ImportError: Image という名前のモジュールがありません。
-
例外が発生しました。トークンの構文エラー、構成要素の誤配置。
-
Python Basics-TypeError: 位置引数を2つ取るが、3つ与えられている
-
C/C++学習メモ-アクティブな例外なしで呼び出されるterminate
-
DjangoでDISTINCTを使用する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
IntelliJ maven プロジェクト pom ファイル エラー xx.jar の成果物記述子の読み込みに失敗した問題 解決方法
-
pythonプログラミング放課後問題集(程春輝)
-
予期しないトークン付近の構文エラー 脚注のエラー解決
-
std::invalid_argument' what() のインスタンスを投げた後に呼び出された処理を終了させる: stoi
-
この宣言には、ストレージクラスまたはタイプ指定子がありません。この警告は何を意味するのですか?
-
mysql 切捨てられた不正なDOUBLE値 解決策
-
ApiModelProperty の使用方法
-
エラー: 接続 ECONNREFUSED 111.231.137.44:6996
-
cmake compile_options add_compile_options CMAKE_CXX_FLAGS 差分
-
Spring boot jpaのフィールド障害問題を使用する