Java で複雑なオブジェクトを作成し、equals メソッドを使用して比較しています。
これでよろしいですか、それともオブジェクトに名前または ID を付けて、オブジェクトの名前/ID を比較することをお勧めしますか?
equals()
メソッドを使用する必要があります。名前や ID の比較を同等にしたい場合は、equals()
メソッド内で行います。
これは、 Java が等価性を判断するデフォルトの方法です。
また、この質問に対する回答のいくつかを見てください: Java equals() メソッドの癖をオーバーライドする
と の間には関係がequals()
ありhashcode()
ます。これらはどちらもコレクションで使用されます。
equals
から継承されたデフォルトはObject#equals()
比較参照です。つまり、2 つのオブジェクトが同一 (メモリ内の同じオブジェクト) の場合は true を返します。
2 つのオブジェクトが同じ特性を共有している場合に equals が true を返すようにするには、それらが異なるオブジェクトであっても、equals をオーバーライドしてこれらの特性を比較する必要があります。
equals をオーバーライドする場合は、hashcode もオーバーライドする必要があります。