¿Hay algún mecanismo Equalator como Comparator, así que puedo tener diferentes equivalentes para preparar listas?Un mecanismo para tener diferentes iguales (equivalentes físicos y equivalentes lógicos) en los objetos de la Colección
EDIT: Mi objetivo es diferenciar entre list1.equals actuales (list2), que comprueba si es una copia superficial o también una copia profunda con todos los objetos a.equals (b) y list1.identical (list2), que comprueba si es simplemente una copia superficial con el listado sin modificar
Todas estas listas son del mismo modelo. Algunas son copias de sí mismas, por lo que mantienen el puntero a los mismos objetos, y otras son copias profundas, por lo que la jerarquía se replica por completo, porque tienen actualizaciones en el contenido, no solo en la estructura.
Me encuentro a menudo makin list1.equals (list2) pero necesito un mecanismo para decir si ambos son TOTAL copias (mismos objetos en el mismo orden para las colecciones) o a veces si son copias LÓGICAS (a través de mi propia lógica implementada es igual), por lo que la lista llamaría a iguales y los objetos deberían implementar algo más que a == b.
Mi problema es que no hay interfaz Equalator, y si puedo reemplazar los objetos es igual a pierdo la capacidad de comparar por total igual (a == b)
Por ejemplo, esto sería bueno;
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());
}
});
y todavía pude hacer list1.equals (list2) por lo que usan iguales por defecto (obj1 == obj2) y esto sólo sería cierto si los objetos contenidos son exactamente lo mismo.
La primera operación es útil para verificar si la lista (que podría ser una lista actualizada con objetos totalmente recreados del modelo) sigue siendo igual a la lista anterior.
La segunda operación es útil para verificar si la lista (que era una copia superficial de la versión actual del modelo de datos), no contiene ningún cambio trascendente para moverla dentro del código cuando era la versión actualizada.
EDIT: Un muy buen ejemplo sería tener una lista de puntos (x, y). Deberíamos poder saber si ambas listas son iguales porque son exactamente el mismo conjunto de puntos o igual porque los puntos que contienen son iguales de una manera lógica. Si pudiéramos implementar tanto phyEqual como logEqual para objetar, y tener ambos métodos en cualquier objeto así list.phyEqual (list2) o list1.logEqual (list2)
Tienes un montón de contexto, pero ¿cuál es tu * pregunta * aquí? –
Primera línea. Luego defino mi problema. Lo siento, comencé con "no está allí" en lugar de "está allí" y creo que es por eso que su lista – Whimusical