最近我在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/