Java 16的Stream.toList()和Stream.collect(Collectors.toList())有什么区别?
- 论坛
- Java 16的Stream.toList()和Stream.collect(Collectors.toList())有什么区别?
21 浏览
Java 16的Stream.toList()和Stream.collect(Collectors.toList())有什么区别?
JDK 16现在直接在Stream实例上包含了一个名为toList()
的方法。在之前的Java版本中,您总是需要使用collect
方法并提供一个Collector
实例。
新的方法显然要少输入一些字符。这两种方法是否可以互换使用,还是有一些微妙的差别需要注意呢?
var newList = someCollection.stream() .map(x -> mapX(x)) .filter(x -> filterX(x)) .toList(); // vs. var oldList = someCollection.stream() .map(x -> mapX(x)) .filter(x -> filterX(x)) .collect(Collectors.toList());
(这个问题类似于Would Stream.toList() perform better than Collectors.toList(),但更关注行为而不仅仅是性能。)