我只是想知道 Java 8 stream 在空列表上的行为是什么。
List<?> emptyList = new ArrayList<>();
List<?> processedList = emptyList.stream().collect(Collectors.toList());
这是空列表还是null
?
我知道 streams 进行惰性传播,所以在这种情况下将调用转到 collect()
方法或只是它将以 stream()
结束方法?
最佳答案
collect
是终端操作,因此必须对其进行评估。
当使用 collect(Collectors.toList())
终止一个 Stream
管道时,你总是会得到一个输出 List
(你永远不会得到 null
)。如果 Stream
为空(由于流的源为空,或者由于流的所有元素在终端操作之前被过滤掉,它是否为空并不重要) ,输出 List
也将为空。
关于空列表上的 Java 8 流操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54501501/