首页 > 解决方案 > 当同时修改它正在工作的列表时,Java 流如何工作?

问题描述

如果我有一个包含 10 个元素的列表,并且我对其进行了流视图,则按年龄对其进行过滤并将其收集到另一个列表中。在这之间,有人在列表中添加了 5 个元素。只有 10 个元素或 15 个元素时,流的行为是什么??

标签: javajava-8java-stream

解决方案


阅读javadoc中的“非干扰”部分。尤其是:

除非流源是并发的,否则在流管道执行期间修改流的数据源可能会导致异常、不正确的答案或不一致的行为。

所以你的问题的答案是它取决于列表的类型,它是否并发,如果不是,它如何处理并发操作以及你在什么时候进行修改(在终端操作之前或中间)。


推荐阅读