首先说一下我伪代码的结构:
Map<Integer,List<A>> val;
//function方法在另一个类中,并且用@Async注解标识,表示异步执行
function(Map<Integer,List<A>> val);//call 1
function(Map<Integer,List<A>> val);//call 2
function(Map<Integer,List<A>> val);//call 3
然后我想取val的value出来,组成一个List<List<A>>,然后拆分为List<A>,那么,
理所当然的使用flatMap是最好的方法:
List<A> data =val.entrySet().stream().map(e ->
e.getValue()).flatMap(List::stream).collect(Collectors.toList());
但是这时候报错:
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