Stream.toList()
終端操作toList()が冗長なcollect(Collectors.toList())を置き換える。
コード比較
✕ Java 8
List<String> result = stream
.filter(s -> s.length() > 3)
.collect(Collectors.toList());
✓ Java 16+
List<String> result = stream
.filter(s -> s.length() > 3)
.toList();
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
7文字対24文字
.toList()が.collect(Collectors.toList())を置き換えます。
不変
結果のリストは変更できません。
流暢
パイプラインの末尾で自然に読めます。
旧来のアプローチ
Collectors.toList()
モダンなアプローチ
.toList()
JDKバージョン
16
難易度
初級
JDKサポート
Stream.toList()
利用可能
JDK 16(2021年3月)以降、広く利用可能
仕組み
Stream.toList()は変更不可能なリストを返します。.collect(Collectors.toUnmodifiableList())と同等ですが、はるかに短く書けます。注意点として、Collectors.toList()とは異なり、結果は不変です。
関連ドキュメント