JDK 16 には、インスタンスtoList()
に直接メソッドStream
が含まれるようになりました。以前の 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());
(この質問は、Stream.toList() が Collectors.toList() よりも優れたパフォーマンスを発揮するかどうかに似ていますが、パフォーマンスではなく(のみ)動作に焦点を当てています。)