Person
名前、年齢、住所、電話、メールなどの単純な属性を持つクラスがあるとします。
私はSets
それぞれのオブジェクトを含んでいPerson
ます。
Set
重複をエレガントに削除するために、セットごとに特定の等価性を動的に定義したいと思います。
たとえば、電話に基づいて重複する人物を削除するセットと、電子メールで重複する人物オブジェクトを削除するセットが必要です。
私が知っている唯一の方法は、何度もサブクラスPerson
を作成し、私の要件に基づいて equals をオーバーライドすることですが、それはクラス数の爆発につながります。
の場合は許可されComparators
ます。同じオブジェクトに対して、必要な/必要な数の匿名コンパレーターを定義できます。
Java
具体的には、オブジェクトの等価の定義は 1 つしかないのに、複数のコンパレータを定義できる理由を理解したいと思います。
この場合、どのような方法が最善でしょうか?