Niemodyfikowalne kolektory
Zbieraj bezpośrednio do niemodyfikowalnej listy za pomocą stream.toList().
Porównanie kodu
✕ Java 8
List<String> list = stream.collect(
Collectors.collectingAndThen(
Collectors.toList(),
Collections::unmodifiableList
)
);
✓ Java 16+
List<String> list = stream.toList();
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Najkrótszy zapis
stream.toList() nie wymaga collect() ani importu Collectors.
Niemutowalny
Wyniku nie można modyfikować — żadnych przypadkowych mutacji.
Czytelny
Czyta się naturalnie jako końcowy krok potoku strumieniowego.
Stare podejście
collectingAndThen
Nowoczesne podejście
stream.toList()
Od JDK
16
Poziom trudności
Średniozaawansowany
Wsparcie JDK
Niemodyfikowalne kolektory
Dostępne
Szeroko dostępne od JDK 16 (marzec 2021)
Jak to działa
Java 10 dodała toUnmodifiableList(), toUnmodifiableSet() i toUnmodifiableMap() zastępując rozwlekłe opakowanie collectingAndThen. Dla list Java 16 oferuje stream.toList() — jeszcze prostszą alternatywę bez wywołania collect(). Dla innych typów kolekcji używaj toUnmodifiableSet() i toUnmodifiableMap().
Powiązana dokumentacja
Dowód