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)

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

Share 𝕏 🦋 in