Difficile aiutare, perché non ci hai detto come ti piace confrontare le collezioni (di pari dimensioni). Alcune idee, sperando che uno si adatta:
Confronta entrambe le collezioni se contengono gli stessi oggetti nello stesso ordine
Iterator targetIt = target.iterator();
for (Object obj:source)
if (!obj.equals(targetIt.next()))
// compare result -> false
Confronta entrambe le collezioni se contengono gli stessi oggetti in qualsiasi ordine
for (Object obj:source)
if (target.contains(obj))
// compare result -> false
Trova elementi in altra collezione che ha cambiato
Iterator targetIt = target.iterator();
for (Object obj:source)
if (!obj.equals(targetIt.next())
// Element has changed
Sulla base di un commento, questo algoritmo avrebbe fatto. Raccoglie tutte le auto che sono state aggiornate. Se il risultato del metodo è un elenco vuoto, entrambe le raccolte contengono voci uguali nello stesso ordine. L'algoritmo si basa su su un'implementazione corretta di equals()
sul tipo Car
!
public List<Car> findUpdatedCars(Collection<Car> oldCars, Collection<Car> newCars)
List<Car> updatedCars = new ArrayList<Car>();
Iterator oldIt = oldCars.iterator();
for (Car newCar:newCars) {
if (!newCar.equals(oldIt.next()) {
updatedCars.add(newCar);
}
}
return updatedCars;
}
fonte
2010-11-03 08:59:47
http: // StackOverflow .com/questions/23445/how-best-to-compare-two-collections-in-java-and-act-on-them –
Quale risultato ti aspetti dal confronto? vuoi estrarre gli elementi che non sono cambiati? hai bisogno di sapere il loro indice nelle collezioni (è lo stesso in entrambi) ... – pgras
Ci scusiamo per la descrizione vaghe. Le raccolte saranno nello stesso ordine e nella stessa dimensione. Alcuni dei dati della nuova raccolta verranno aggiornati dalla raccolta precedente. Basati su carType, registrationNo e insurancePolicy sono gli stessi in entrambe le raccolte, quindi eseguirò un altro codice. – damien535