Difficile d'aider, car vous ne nous avez pas dit comment vous aimez comparer les collections (taille égale). Quelques idées, dans l'espoir on s'adapter:
Comparer les collections si elles contiennent les mêmes objets dans le même ordre
Iterator targetIt = target.iterator();
for (Object obj:source)
if (!obj.equals(targetIt.next()))
// compare result -> false
Comparer les collections si elles contiennent les mêmes objets dans l'ordre quelconque
for (Object obj:source)
if (target.contains(obj))
// compare result -> false
Trouver des éléments dans d'autres collection qui a changé
Iterator targetIt = target.iterator();
for (Object obj:source)
if (!obj.equals(targetIt.next())
// Element has changed
Sur la base de votre commentaire, cet algorithme ferait. Il recueille toutes les voitures qui ont été mises à jour. Si le résultat de la méthode est une liste vide, les deux collections contiennent des entrées égales dans le même ordre. L'algorithme repose sur sur une implémentation correcte de equals()
sur le type 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;
}
http: // stackoverflow .com/questions/23445/comment-mieux-comparer-deux-collections-en-java-et-agir-sur-eux –
Quel résultat attendez-vous de la comparaison; vous voulez extraire les éléments qui n'ont pas changé? Avez-vous besoin de connaître leur index dans les collections (c'est pareil dans les deux) ... – pgras
Toutes mes excuses pour la vague description pgras. Les collections seront dans le même ordre et la même taille. Certaines des données de la nouvelle collection seront mises à jour depuis la collection précédente. Basé sur carType, registrationNo et insurancePolicy étant les mêmes dans les deux collections, je vais exécuter un autre code. – damien535