Esiste un meccanismo di Equalizzatore come il Comparatore, quindi posso avere diversi uguali per gli elenchi di coparing?A Meccanismo per avere diversi uguali (fisico equo e logico uguale) sugli oggetti nella Raccolta
EDIT: Il mio obiettivo è quello di distinguere tra list1.equals attuali (list2), che controlla se la sua una copia o una copia profonda con tutti gli oggetti a.equals (b) e list1.identical (list2), che controlla se la sua copia è semplicemente superficiale con l'elenco non modificato
Tutti questi elenchi provengono dallo stesso modello. Alcuni sono copie di se stessi in modo da mantenere il puntatore agli stessi oggetti, mentre altri sono copie profonde, quindi la gerarchia è completamente replicata, poiché hanno aggiornamenti nel contenuto, non solo nella struttura.
Mi trovo spesso makin list1.equals (lista2) ma ho bisogno di un meccanismo per dire se entrambe sono copie TOTALI (stessi oggetti nello stesso ordine per le raccolte) o talvolta se sono copie LOGICHE (attraverso la mia logica implementata equivale), quindi la lista chiamerebbe equals e gli oggetti dovrebbero implementare qualcosa di più di un == b.
Il mio problema è che non c'è alcuna interfaccia Equalator, e se sovrascrivo oggetti equivale al perdo la capacità di confrontare da TOTAL EQUAL (a == b)
Ad esempio, questo sarebbe bello;
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());
}
});
ed ancora ho potuto fare list1.equals (list2) in modo da utilizzare eguali di default (obj1 == obj2) e questo sarebbe vero solo se gli oggetti contenuti sono esattamente gli stessi.
La prima operazione è utile per verificare se l'elenco (che potrebbe essere un elenco aggiornato con oggetti completamente ricreati dal modello) è ancora uguale alla vecchia lista.
La seconda operazione è utile per verificare se l'elenco (che era una copia superficiale della vecchia versione corrente del modello dati), non contiene alcuna modifica trascendente dallo spostamento all'interno del codice quando era la versione udpdated.
MODIFICA: Un ottimo esempio sarebbe avere un elenco di punti (x, y). Dovremmo essere in grado di sapere se entrambe le liste sono uguali perché sono esattamente lo stesso insieme di punti o uguali perché i punti che contengono sono uguali in modo logico. Se potessimo implementare sia phyEqual che logEqual su object, e avere entrambi i metodi in qualsiasi oggetto, list.phyEqual (list2) o list1.logEqual (list2)
Hai un sacco di contesto, ma qual è la tua * domanda * reale qui? –
Prima riga. Quindi definisco il mio problema. Scusa, ho iniziato con 'isn't there' invece di 'is there' e penso che sia per questo che il suo confuso elenco – Whimusical