Выбор ответа Middle Лямбды и Stream API обновлено

Stream.toList и Collectors.toList

Вопрос

Чем stream.toList() (Java 16) отличается от collect(Collectors.toList())?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: toList() возвращает неизменяемый список. Stream.toList() возвращает неизменяемый список, попытка add бросит UnsupportedOperationException.

Варианты ответа

  1. Ничем: это синоним, только короче
  2. toList() не допускает null-элементы
  3. toList() всегда возвращает изменяемый ArrayList
  4. toList() возвращает неизменяемый списокправильный ответ

Разбор

Stream.toList() возвращает неизменяемый список, попытка add бросит UnsupportedOperationException. Collectors.toList() на практике даёт изменяемый ArrayList. Null-элементы toList() допускает (в отличие от List.of). Поэтому при замене одного на другой проверяют, не модифицируют ли список дальше.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.