URL: https://linuxfr.org/forums/programmation-java/posts/linkedlist-it%C3%A9rateurs-et-modifications-concurrentes Title: LinkedList, itérateurs, et modifications concurrentes Authors: Pierre Berger Date: 2011年03月12日T20:37:19+01:00 Tags: Score: 1 Bonjour à tous, J'ai découvert avec désespoir que Java invalidait les itérateurs sur les listes en cas de modification concurrente. Ca me chagrine beaucoup parce que je voudrais garder un "pointeur" vers un élément particulier de ma liste pendant que j'ajoute des trucs en fin de liste. En clair, un truc comme : ```java LinkedList aList = new LinkedList(); // ... on ajoute des éléments dans ma liste ... // ... // Je crée mon itérateur et je l'amène à la position voulue ListIterator aIt = aList.iterator(); while (aIt.hasNext()) { aIt.next() } // je concatène une autre liste aList.addAll(monAutreListe); // Et la je voudrais bien pouvoir accéder à l'élément qui était en fin de liste AVANT la concaténation aIt.previous().faireCeQueJeVeux() ``` Mais Java me balance une exception comme quoi la liste a été modifiée après l'allocation de l'itérateur. Pourtant ça me parait vraiment curieux : je comprendrais que les itérateurs d'un tableau soient invalidés (la représentation en mémoire peut complètement changer quand on insère des trucs). Mais les éléments de ma liste chaînée ne sont pas censés bouger quand je concatène des trucs, donc je comprends pas pourquoi Java prend un malin plaisir à me casser les c... pieds. Si quelqu'un à une solution simple pour faire ce que je veux faire (sans reparcourir toute la liste, ou utiliser des indices, le but de la manip c'est justement d'avoir quelque chose en complexité O(1) pour l'accès à ce fameux élément), je suis preneur ! :) Merci d'avance.

AltStyle によって変換されたページ (->オリジナル) /