[解決済み】複数のフィールドでオブジェクトを比較する方法
2022-03-30 09:54:10
質問
いくつかのオブジェクトがあり、それらはいくつかのフィールドによって比較することができると仮定します。
public class Person {
private String firstName;
private String lastName;
private String age;
/* Constructors */
/* Methods */
}
つまり、この例では、「もし」と聞いたときに
a.compareTo(b) > 0
aの姓がbの姓より先か、aがbより年上か、などなど...。
不必要な乱雑さやオーバーヘッドを追加することなく、この種のオブジェクト間の複数比較を可能にする最もクリーンな方法は何でしょうか?
-
java.lang.Comparable
インターフェースは、1つのフィールドのみでの比較を可能にします。 -
多数の比較メソッドを追加する(つまり
compareByFirstName()
,compareByAge()
などなど...)は、ごちゃごちゃしていると私は思います。
では、どうすればいいのでしょうか?
どのように解決するのか?
を実装することができます。
Comparator
を比較するもので、2つの
Person
オブジェクトを作成し、好きなだけ多くのフィールドを調べることができます。コンパレータの中に変数を入れて、どのフィールドと比較するかを指示することもできますが、おそらく複数のコンパレータを書く方が簡単でしょう。
関連
-
[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] なぜJavaにはtransientフィールドがあるのですか?
-
[解決済み] オブジェクトの属性に基づいてオブジェクトのリストを並べ替えるには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] トークンのシンタックスエラー、これらのトークンを削除してください [closed].
-
[解決済み] Firebase クラスにシリアライズするプロパティが見つからない
-
[解決済み] この配列の中の数字を入れ替えるには、何が足りないのでしょうか?ジャバ
-
[解決済み] このフォーマット(Tue Jul 13 00:00:00 CEST 2010)の日付をJavaの日付に変換する方法(文字列はalfrescoのプロパティに由来しています)
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] Eclipse- Dynamic Web Module 3.0 で新しいプロジェクトを作成するときに Java 1.6 以降が必要なエラーが発生する。
-
[解決済み] javac ソースファイルが見つかりません
-
[解決済み] 午前0時からの時間を秒単位で取得する方法
-
[解決済み] アクティビティに割り当てられない
-
[解決済み] .lengthが解決できない、またはフィールドでない