5
Ich benutze Java8 Streams. Hier wird die Datenstruktur Ich habe:java8 java.util.ConcurrentModificationException während forEach Zyklus
Map< String, List<String>> mmessage = getSomeMessage();
Dann iterieren ich über die Karte und Liste:
mmessage.entrySet().stream().forEach(entry -> {
entry.getValue().stream().forEach(li -> {
if (lis.indexOf(li) == - 1) {
lis.add(lineItem);
}
});
});
Aber gleichzeitige Änderung Ausnahme erhalten:
java.util.ConcurrentModificationException
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1380)
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
at com.web3.buyer.roomba.RoombaTurn.lambda$received$3(RoombaTurn.java:296)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
at com.web3.buyer.roomba.RoombaTurn.received(RoombaTurn.java:295)
at com.web3.buyer.SystemBus.lambda$publishToTheQueue$0(SystemBus.java:51)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Von meinem Verständnis über die iteriert map \ list sollte diese Art von Verhalten nicht verursachen.
Was ist 'lis' und wie hängt es mit der' message' 'Map' zusammen? – Eran
Sie können Valies nicht zu der Liste hinzufügen, die Sie durchlaufen – Jens
@Jens OP fügt keine Werte zur selben Liste hinzu (zumindest wissen wir das noch nicht, da wir nicht wissen, was 'lis' ist). – Eran