我明白为什么下面的代码没问题。因为在调用终端操作之前正在修改集合。
List<String> wordList = ...;
Stream<String> words = wordList.stream();
wordList.add("END"); // Ok
long n = words.distinct().count();
但是为什么这段代码不行呢?
Stream<String> words = wordList.stream();
words.forEach(s -> if (s.length() < 12) wordList.remove(s)); // Error—interference
最佳答案
Stream.forEach()
是终端操作,在终端启动/调用后修改底层wordList集合。
关于java-8 - java 8 流干扰与非干扰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24841933/