java-8 - java 8 流干扰与非干扰

标签 java-8 java-stream

我明白为什么下面的代码没问题。因为在调用终端操作之前正在修改集合。

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/

相关文章:

java - 如何让 ExecutorService 中的线程进入等待阶段

java - 如何确定流中各种函数的输入值

java - 参数中的Java类型提升

java 8 在使用 Collectors.toMap 时处理自定义异常

java - 从 map 对象中查找范围内的元素数

java - 如何使用 Java Stream 运算符获取子值的子值并收集为 map

构造函数中带有参数的 Java 8 供应商

java-8 - 仅在满足条件时链接多个CompletionStage

Guava 不可变表的 Java 8 收集器

java - 如何使用流或 lambda 简化我的代码