Javaには、複数の/別の実行方法であるの比較を可能にするために、クラス自体の外部のオブジェクトの比較を提供するためのComparator<T>
があります。 順不同比較を行うのJava:等価性を判断するための外部クラス?
しかし、唯一の標準的な方法は、クラス内equals()
をオーバーライドすることです。
クラスの外部で複数の/並べ替えられていない比較を提供する場合はどうすればよいですか?最終用途が順不同チェックのためであると仮定すると、(明白なユースケースは、特定のプロパティに基づいて等価クラスにコレクションを分割されています。)
(例えばソートやインデックス作成のためではない)であり、それは今までOK Comparator<T>
を実装するだけのためにチェックしています2つのオブジェクトが等しい場合は0、2つのオブジェクトが等しくない場合は値!= 0を返します。 (ノート:私は、このソリューションにジャンプしない唯一の理由は、技術的には推移性と対称性を満たす関係を提供しないことによってComparator
の契約を破ることができるということです。)
が行われている必要がありますように思えEqualsComparator<T>
標準クラスまたは何か。
(グアバは?このようなものを扱うん)
hmmm ...どちらもタグ付けされていますが、ベータです。 –
@Jason:注意して使用してください:)(最終的に 'Equivalence'はインターフェースなので、あなたは*実装*に頼っているようではありません) –
私はそれが離れることは約束できますが、それは流出している。たとえば、差し迫ったバージョン10.0では、それを抽象クラスに変更し、Equivalencesのほとんどを直接そのクラスに移しました(そして、ある時点で仕事を終えることになるでしょう)。 –