Java 16的Stream.toList()和Stream.collect(Collectors.toList())有什么区别?

6 浏览
0 Comments

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(),但更关注行为而不仅仅是性能。)

0