Java: classe externa para determinar a equivalênci
Java tem umComparator<T>
para fornecer comparação de objetos externos à própria classe, para permitir métodos múltiplos / alternativos de execução ordenou comparações.
Mas a única maneira padrão de fazernão ordenad comparações é substituirequals()
dentr uma aula
O que devo fazer quando quero fornecer comparações não ordenadas múltiplas / alternativas externas a uma classO caso de uso óbvio está particionando uma coleção em classes de equivalência com base em propriedades específicas
Supondo que o uso final seja para verificação não ordenada (por exemplo, não para classificação ou indexação), é sempre bom implementarComparator<T>
que apenas verifica a igualdade, retornando 0 se dois objetos são iguais e um valor! = 0 quando dois objetos são desiguais? Not: a única razão pela qual não pulo nessa solução é que tecnicamente ela pode quebrar o contrato deComparator
não fornecendo uma relação que satisfaça transitividade e simetria.)
Parece que deveria ter havido umEqualsComparator<T>
classe padrão ou algo assim.
(O Goiaba lida com algo assim?)