Java 8使用Stream“filter”和“collect”后会创建一个新的List吗?

2024-04-19

我有使用 Java8 的代码:

List<Integer> list = new ArrayList<Integer>();
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]。

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


根据Javadoc https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html#toList--,通过Collector由返回Collectors.toList()进入collect方法将创建一个新列表。

public static <T> Collector<T,?,List<T>> toList()

返回一个Collector将输入元素累积到一个新的List。不保证类型、可变性、可序列化性或线程安全性List回;如果对返回的有更多控制List是必需的,使用toCollection(Supplier).

原来的列表不受影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 8使用Stream“filter”和“collect”后会创建一个新的List吗? 的相关文章

随机推荐