Collections 中級

stream.toList()で変更不可能なリストに直接収集する。

✕ Java 8
List<String> list = stream.collect(
    Collectors.collectingAndThen(
        Collectors.toList(),
        Collections::unmodifiableList
    )
);
✓ Java 16+
List<String> list = stream.toList();
このコードに問題がありますか? お知らせください。
📏

最短の記法

stream.toList()はcollect()もCollectorsのインポートも不要です。

🔒

不変

結果は変更できず、意図しない変更を防ぎます。

📖

読みやすい

ストリームパイプラインの終端ステップとして自然に読めます。

旧来のアプローチ
collectingAndThen
モダンなアプローチ
stream.toList()
JDKバージョン
16
難易度
中級
変更不可能なコレクター
利用可能

JDK 16(2021年3月)以降、広く利用可能

Java 10ではcollectingAndThenの冗長なラッパーを置き換えるtoUnmodifiableList()、toUnmodifiableSet()、toUnmodifiableMap()が追加されました。特にリストについては、Java 16のstream.toList()がさらにシンプルな代替手段を提供します。collect()の呼び出しも不要です。他のコレクション型にはtoUnmodifiableSet()やtoUnmodifiableMap()を使用してください。

共有 𝕏 🦋 in