Unmodifiable collectors
Collect directly to unmodifiable collections.
Code Comparison
✕ Java 8
List<String> list = stream.collect(
Collectors.collectingAndThen(
Collectors.toList(),
Collections::unmodifiableList
)
);
✓ Java 10+
List<String> list = stream.collect(
Collectors.toUnmodifiableList()
);
Why the modern way wins
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
JDK Support
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.