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

在使用Stream"filter"和"collect"之后,Java 8会创建一个新的List吗?

如何解决《在使用Stream"filter"和"collect"之后,Java8会创建一个新的List吗?》经验,为你挑选了2个好方法。

我有使用Java8的代码:

List list = new ArrayList();
list.add(3);
list.add(5);
list.add(4);
list.add(2);
list.add(5);
list = list.stream().filter(i -> i >= 3).collect(Collectors.toList());

原始列表是[3,5,4,2,5].在"过滤"和"收集"操作之后,列表变为[3,5,4,5].

是否所有操作都在原始列表中执行,并且不创建新列表?或者在"过滤"和"收集"操作之后,返回一个新创建的列表并忽略原始列表?



1> Mureinik..:

collectwith 的调用Collectors.toList()将创建一个新列表.原始列表不受流式传输的影响.



2> Tagir Valeev..:

如果您确实想要修改原始列表,请考虑使用removeIf:

list.removeIf(i -> i < 2);

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