Java List.addAll 使用集合的流而不是使用集合本身?

标签 java list java-8 java-stream

最近我在List.addAll中发现了一个使用stream的代码片段,但是我看不到它使用的原因。

给出一个简单的列表。 List<E> subList它作为参数传递给方法。有一个是另一个,它是一个字段并包含相同类型的元素。 List<E> originalList.

这是用子列表的元素扩展原始列表的部分。

originalList.addAll(subList.stream().collect(Collectors.toList()))

我不明白的是:为什么作者在这里使用流而不是执行以下操作:

originalList.addAll(subList)

在这种情况下使用流有好处吗?

最佳答案

完全没有区别,使用 originalList.addAll(subList) 的效果完全相同,因为 addAll() 方法创建了 subList 的数组副本 在内存中并没有指向相同的引用。也许 Stream 中有一些中间操作被清除,而作者忘记清理代码。

使用originalList.addAll(subList),因为不需要创建流并将其收集到List,这只是不必要的操作。

关于Java List.addAll 使用集合的流而不是使用集合本身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39958530/

相关文章:

java - 使用Java多线程,什么是最有效的协调找到最好的结果?

java - Servlet 过滤器 - 来自 servlet 的转发请求是否会进入 servlet 过滤器?

Java面向对象编程策略

R - 有效地将列表列表的所有元素保存为 data.frame

java - 使用 Java 8 即时创建具有复合键的 map

java-8 - Java 8 收集并更改结果的格式

java - Context.xml 中的相对路径

java - 使用信号量在 Java 中就餐哲学家

C++ 使用字符串项在列表中查找结构?

c# - c#中的List数组