Stream.toList()
Терминальный toList() заменяет многословный collect(Collectors.toList()).
Сравнение кода
✕ Java 8
List<String> result = stream
.filter(s -> s.length() > 3)
.collect(Collectors.toList());
✓ Java 16+
List<String> result = stream
.filter(s -> s.length() > 3)
.toList();
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
7 символов против 24
.toList() заменяет .collect(Collectors.toList()).
Неизменяемый
Результирующий список нельзя изменить.
Fluent
Читается естественно в конце пайплайна.
Старый подход
Collectors.toList()
Современный подход
.toList()
Начиная с JDK
16
Сложность
Начинающий
Поддержка JDK
Stream.toList()
Доступно
Широко доступно с JDK 16 (март 2021)
Как это работает
Stream.toList() возвращает неизменяемый список. Это эквивалент .collect(Collectors.toUnmodifiableList()), но гораздо короче. Примечание: результат неизменяем, в отличие от Collectors.toList().
Связанная документация
Доказательство