Sobes.tech
Назад к вопросам
Junior — Middle
101

Какое различие между методом toList() и методом collect(Collectors.toList()) в Stream API в Java?

Компании, где спрашивали
Северсталь-ИфокомСеверсталь-Ифоком

Ответ от нейросети

sobes.tech AI

В Java Stream API метод collect(Collectors.toList()) — это стандартный способ собрать элементы потока в список (List). Он возвращает новый список, содержащий все элементы потока.

Метод toList() появился в Java 16 как более короткий и удобный способ собрать элементы в список. Он тоже возвращает список, но с некоторыми отличиями:

  • Collectors.toList() не гарантирует конкретную реализацию списка и может возвращать, например, ArrayList.
  • Stream.toList() возвращает неизменяемый список (immutable), который нельзя модифицировать (например, добавить или удалить элементы).

Пример:

List<String> list1 = stream.collect(Collectors.toList()); // mutable list
List<String> list2 = stream.toList(); // immutable list

list1.add("new"); // работает
nlist2.add("new"); // выбросит UnsupportedOperationException

Таким образом, основное различие — в мутабельности возвращаемого списка и удобстве использования.