当前位置:  开发笔记 > 编程语言 > 正文

将列表传输到Java流中,然后删除列表中的元素。发生某些错误

如何解决《将列表传输到Java流中,然后删除列表中的元素。发生某些错误》经验,为你挑选了1个好方法。



1> Eran..:

Consumer传递给forEach必须是互不干扰。解释如下。

不干涉

流使您可以对各种数据源执行可能并行的聚合操作,甚至包括非线程安全的集合(例如ArrayList)。这只有在我们可以防止流管道执行期间干扰数据源的情况下才有可能。除了转义hatch操作iterator()和spliterator()之外,执行都在调用终端操作时开始,并在终端操作完成时结束。对于大多数数据源,防止干扰意味着确保在执行流水线期间根本不修改数据源。值得注意的例外是其源是并发集合的流,这些流是专门为处理并发修改而设计的。并发流源是那些其分隔符报告CONCURRENT特性的源。

(来源)

顺便说一句,stringStream.count()即使前一条stringStream.forEach()语句没有失败,您也会失败,因为forEach(与任何终端操作一样)使用Stream,而a Stream不能使用两次。

实现您要执行的操作的正确方法是过滤原始文件List并创建一个新文件List

List filtered = 
    list.stream()
        .filter(m->!m.equals("banana"))
        .collect(Collectors.toList());

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有