Um mecanismo para ter diferentes iguais (iguais e lógicos iguais físicos) em objetos na coleção

Existe algum mecanismo Equalator como Comparator para que eu possa ter equals diferentes para listas de comparação?

EDITAR: Meu objetivo é diferenciar entre list1.equals (list2) atual, que verifica se é uma cópia superficial ou também uma cópia profunda com todos os objetos a.equals (b) e list1.identical (list2), que verifica se sua cópia superficial é não modificada listando

Todas essas listas são do mesmo modelo. Algumas são cópias de si mesmas, então elas seguram o ponteiro para os mesmos objetos, e outras são cópias profundas, então a hierarquia é totalmente replicada, porque elas têm atualizações no conteúdo, não apenas na estrutura.

Eu me encontro freqüentemente fazendo list1.equals (list2), mas eu preciso de um mecanismo para dizer se ambos são cópias TOTAL (mesmos objetos na mesma ordem para coleções) ou às vezes se são cópias LÓGICAS (através da minha própria lógica implementada é igual), então listar chamaria equals e objetos deveriam implementar algo mais que a == b.

Meu problema é que não há interface Equalator, e se eu substituir objetos é igual a eu perco a capacidade de comparar por TOTAL EQUAL (a == b)

Por exemplo, isso seria legal;

Collections.equal(l1,l2,new Equalator(){
    @Override public boolean equals(Obj1,Obj2){
          //Default lists comparison plus commparison of objects based on
          return (obj1.propertyX() == obj2.propertyX());
    }
});

e ainda eu poderia fazer list1.equals (list2), então eles usam equals padrão (obj1 == obj2) e isso só seria verdade se os objetos contidos fossem exatamente os mesmos.

A primeira operação é útil para verificar se a lista (que pode ser uma lista atualizada com objetos totalmente recriados do modelo) ainda é igual à lista antiga.

A segunda operação é útil para verificar se a lista (que era uma cópia superficial da versão atual antiga do modelo de dados) não contém nenhuma alteração transcendente da movimentação dentro do código quando era a versão atualizada.

EDITAR: Um bom exemplo seria ter uma lista de Point (x, y). Deveríamos ser capazes de saber se ambas as listas são iguais porque são exatamente o mesmo conjunto de pontos ou iguais porque os pontos que eles contêm são iguais de uma maneira lógica. Se pudéssemos implementar phyEqual e logEqual para o objeto, e ter os dois métodos em qualquer objeto, então list.phyEqual (list2) ou list1.logEqual (list2)

questionAnswers(2)

yourAnswerToTheQuestion