Collections intermediate

Unmodifiable collectors

Collect directly to unmodifiable collections.

✕ Java 8
List<String> list = stream.collect(
    Collectors.collectingAndThen(
        Collectors.toList(),
        Collections::unmodifiableList
    )
);
✓ Java 10+
List<String> list = stream.collect(
    Collectors.toUnmodifiableList()
);
📏

Direct

One collector instead of wrapping with collectingAndThen.

🔒

Immutable

Result cannot be modified — no accidental mutations.

🚫

Null-safe

Rejects null elements during collection.

Old Approach
collectingAndThen
Modern Approach
toUnmodifiable*()
Since JDK
10
Difficulty
intermediate
Unmodifiable collectors
Available

Widely available since JDK 10 (March 2018)

How it works

Java 10 added toUnmodifiableList(), toUnmodifiableSet(), and toUnmodifiableMap() collectors. No more wrapping with collectingAndThen.

Share 𝕏 🦋 in