Je dois supprimer l'objet de la liste qui se trouve dans la liste qui se trouve dans une autre partie de ne pas vérifier les objets avec le même nom (mais différentes valeurs de cet objet).
Iterator<Foo> iterator = fooList.iterator();
while (iterator.hasNext()) {
Foo foo = iterator.next();
// some code
while (iterator.hasNext()){
Foo foo2 = iterator.next();
if (foo2.getName() == foo.getName()) {
// some code that stores and manipulates values from foo2
iterator.remove();
}
}
//some code that using values from many foos with the same name
}
3 Réponses :
Premier, @override Equals () Code> dans la classe FOO code> Pour décider des attributs qui font deux objets égaux et une des implémentations simultanées d'une liste comme CopyOnwriDraRayList code> pour vous permettre de modifier tout en boucle sur la liste before remove
[1, one, 2, two, 3, three, 4, four]
after remove
[2, two, 3, three, 4, four
Pour plus de détails sur les collections concurrentes: docs.oracle.com/javase/ Tutoriel / Essential / Concurrence / ...
Si vous avez besoin de supprimer des doublons du du foast code> par une propriété spécifique, vous pouvez essayer cette approche:
Le faire comme suit: p> Assurez-vous d'utiliser S1.Equals (S2) Code> à Comparez S1 code> avec S2 code>; Plutôt que d'utiliser s1 == S2 code> (comment vous avez fait). p> h1>
Je dois supprimer des objets de la liste avant que la plus grande boucle ne va à la duplication
Si cela ne fonctionne pas, je dois examiner la liste que vous traitez. Modifiez votre question et postez la même chose.
Faire une copie. Vous ne pouvez pas supprimer un élément d'une liste que vous êtes itération sans problèmes
Le premier code ne fonctionnera certainement pas car il lancera un
ConcurrentModificationExtion code>. Le deuxième code pourrait probablement être effectué pour fonctionner si vous utilisez des itérateurs distincts. Notez également que vous ne devriez pas utiliser== code> ici. Mais pour être honnête, ce n'est pas tout à fait clair pour moi ce que vous voulez réaliser. Envisagez d'ajouter une explication et un exemple.Si vous fournissez une image plus grande du problème, vous pouvez obtenir une meilleure aide. Qu'essayez-vous vraiment d'atteindre ici?
Pourquoi êtes-vous itérant la même liste deux fois? Avec un imbriqué dans l'autre? Ne peut penser à aucune raison pour laquelle cela aurait un sens
J'ai besoin de supprimer de la liste des choses qui ont les mêmes noms avant la première boucle ira au premier double. Mais aussi je dois faire des opérations sur d'autres valeurs stockées dans ces objets