Collector non modificabili
Raccogli direttamente in una lista non modificabile con stream.toList().
Confronto Codice
✕ Java 8
List<String> list = stream.collect(
Collectors.collectingAndThen(
Collectors.toList(),
Collections::unmodifiableList
)
);
✓ Java 16+
List<String> list = stream.toList();
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Il più breve
stream.toList() non necessita di collect() né dell'importazione di Collectors.
Immutabile
Il risultato non può essere modificato — nessuna mutazione accidentale.
Leggibile
Si legge naturalmente come passo terminale di qualsiasi pipeline stream.
Approccio Vecchio
collectingAndThen
Approccio Moderno
stream.toList()
Dal JDK
16
Difficoltà
Intermedio
Supporto JDK
Collector non modificabili
Disponibile
Ampiamente disponibile dal JDK 16 (marzo 2021)
Come funziona
Java 10 ha aggiunto toUnmodifiableList(), toUnmodifiableSet() e toUnmodifiableMap() per sostituire il verboso wrapper collectingAndThen. Per le liste in particolare, stream.toList() di Java 16 fornisce un'alternativa ancora più semplice — nessuna chiamata a collect(). Usa toUnmodifiableSet() e toUnmodifiableMap() per altri tipi di collezione.
Documentazione Correlata