Java - hinzufügen von Elementen zu der Liste während der Iteration über es
Möchte ich vermeiden, dass ConcurrentModificationException
. Wie sollte ich das tun?
InformationsquelleAutor der Frage Trup | 2012-07-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie einen
ListIterator
die Unterstützung für ein entfernen/hinzufügen-Methode während der iteration selbst.InformationsquelleAutor der Antwort Edwin Dalorzo
Anstatt einen iterator, können Sie mithilfe einer for-Schleife mit einem index. Zum Beispiel:
InformationsquelleAutor der Antwort JimN
Den Sie verwenden möchten eine
ListIterator
. Du kannst eines von diesen von jeder Art von Liste, obwohl für die Effizienz, die Sie wahrscheinlich wollen, um eine von einemLinkedList
.Drucke
[0, 10, 1, 11, 2, 12]
.InformationsquelleAutor der Antwort Keith Randall
Erstellen Sie eine neue Liste, und füllen Sie es.
InformationsquelleAutor der Antwort Bringer128
Gibt es drei Ansätze, um zu vermeiden, oben Ausnahme
Können Sie konvertieren die Liste in ein array und iteriere über das array. Dieser Ansatz funktioniert gut für kleine oder mittelgroße Liste, aber wenn die Liste zu groß ist, dann wird es Auswirkungen auf die Leistung viel.
Sperren Sie können die Liste während der Iteration, indem man es in einen synchronisierten block. Dieser Ansatz wird nicht empfohlen, weil es wird nicht aufhören, die Vorteile von Multi-Threading.
Wenn Sie mit JDK1.5 oder höher, dann können Sie ConcurrentHashMap und Klassen CopyOnWriteArrayList. Es ist die empfohlene Vorgehensweise.
InformationsquelleAutor der Antwort developer