Nicht-modifizierbare Collectors
Direkt in eine nicht-modifizierbare Liste mit stream.toList() sammeln.
Code-Vergleich
✕ Java 8
List<String> list = stream.collect(
Collectors.collectingAndThen(
Collectors.toList(),
Collections::unmodifiableList
)
);
✓ Java 16+
List<String> list = stream.toList();
Problem mit diesem Code entdeckt? Sag uns Bescheid.
Warum der moderne Weg gewinnt
Kürzest möglich
stream.toList() benötigt weder collect() noch einen Collectors-Import.
Unveränderlich
Das Ergebnis kann nicht geändert werden — keine versehentlichen Mutationen.
Lesbar
Liest sich natürlich als abschließender Schritt jeder Stream-Pipeline.
Alter Ansatz
collectingAndThen
Moderner Ansatz
stream.toList()
Seit JDK
16
Schwierigkeitsgrad
Fortgeschritten
JDK-Unterstützung
Nicht-modifizierbare Collectors
Verfügbar
Weitgehend verfügbar seit JDK 16 (März 2021)
Wie es funktioniert
Java 10 fügte toUnmodifiableList(), toUnmodifiableSet() und toUnmodifiableMap() hinzu, um den ausführlichen collectingAndThen-Wrapper zu ersetzen. Für Listen bietet stream.toList() aus Java 16 eine noch einfachere Alternative — ganz ohne collect()-Aufruf. Für andere Kollektionstypen toUnmodifiableSet() und toUnmodifiableMap() verwenden.
Zugehörige Dokumentation