1
HashSet1.retainAll(HashSet2);
はどのように舞台裏で機能しますか?どのようにHashSet1.retainAll(HashSet2);舞台裏で働く?
私は同一のパラメータを持つオブジェクトを2つの異なるHashSet
に追加していますが、上記の使用時に正しい結果が得られないようです。つまり、実際にはオブジェクト内の同じパラメータであることは検出されません。
上記の方法は、セット内のオブジェクトの実際のアドレスを比較していますか?
もしそうなら、どうやってオブジェクトのパラメータを比較することができますか?
おそらくオーバーライドは等しいですか?
'hashCode'と' equals'メソッドをオーバーライドする必要があります。 – marstran
ありがとう@marstran、素晴らしい仕事をした。 –
ちなみに、期待どおりに動作させるには、2つの方法の契約も満たす必要があります。 2つのオブジェクトが等しい場合、同じハッシュコードを持つ必要があります。ただし、2つのオブジェクトが同じハッシュコードを持つ場合、(ハッシュの衝突のために)同じではない可能性があります。 – marstran