Java ソート例外 比較メソッドの一般契約違反
2022-02-25 11:21:46
o1オブジェクトの開始時刻がo2の開始時刻より小さい場合、o1,o2の順序は交換されない、それ以外の場合は順序が交換されることを意味する、ソートコードを書いてください。
if (o1.getTimeStart().getTime() < o2.getTimeStart().getTime()) {
return -1;
} else {
return 1;
}
しかし、これまで遭遇したことのない例外メッセージが表示されて実行される
java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.TimSort.mergeLo(TimSort.java:777)
at java.util.TimSort.mergeAt(TimSort.java:514)
at java.util.TimSort.mergeForceCollapse(TimSort.java:457)
at java.util.TimSort.sort(TimSort.java:254)
at java.util.Arrays.sort(Arrays.java:1438)
JDK7以降に新しいソートアルゴリズムTimSortが置き換えられ、2つの値が等しい場合に判断せず、1として扱うため、例外が発生すると読んだことがあります。
詳細は後述
取得元:https://www.cnblogs.com/guolaoshi/p/11490878.html
関連
-
Java Error スレッド "AWT-EventQueue-0" で例外発生 java.lang.
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
xxx:jarのアーティファクトディスクリプタの読み込みに失敗した問題は解決しました。
-
IDEA パッケージステートメントの欠落
-
徹底的なJAVAアノテーション(Annotation):カスタムアノテーション
-
javaException: 比較メソッドが一般契約に違反しています!
-
SailSoftレポート例外の概要と解決策。
-
探索中にArrayListのエラーが報告される理由を分析する。
-
mvn install でローカルリポジトリにアーティファクトが見つかりませんでした。
-
アーティファクトが見つかりませんでした
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
スタイルシートとして解釈されるリソースが、MIMEタイプtext/htmlで転送される。
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
java.lang.NoClassDefFoundError: org.apache.jasper.el.ELContextImpl クラスを初期化できませんでした。
-
response.sendRedirectによる不具合とその対処法
-
JavaスレッドのThreadクラス詳細説明
-
航空機戦争ゲームのJava実装 (ソースコード+コメント)
-
InvalidDefinitionException: 構築できない(Creatorが存在しない)
-
ネストされた例外は com.fasterxml.jackson.databind.JsonMappingException です。
-
com.mongodb.MongoSocketOpenException: ソケットを開くときに例外が発生します。
-
DataIntegrityViolationExceptionの取り扱いについて