Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: stream, api

В чём разница между collect(toList()) и toList()?

Вопрос проверяет понимание различий между классическим и новым API Stream и влияния на изменяемость коллекций.

Короткий ответ

collect(toList()) возвращает изменяемый список. toList() возвращает неизменяемый список. toList() появился в новых версиях Java и короче по синтаксису. Поведение collect(toList()) зависит от реализации. Поэтому важно понимать, какой список вы получаете.

Длинный ответ

Хотя оба способа выглядят похожими, между ними есть важные различия.

Определение

collect(toList()) — классический способ сбора элементов стрима в список.
toList() — удобный метод Stream API, возвращающий неизменяемую коллекцию.

Ключевые отличия

Перед перечислением важно отметить: различие не только в синтаксисе.

1) Изменяемость результата

  1. collect(Collectors.toList())

    • обычно возвращает ArrayList

    • список можно модифицировать

  2. toList()

    • возвращает immutable список

    • попытка изменения приведёт к ошибке

2) Версия Java

  1. collect(toList())

    • доступен давно

  2. toList()

    • появился в Java 16

3) Контракт и предсказуемость

  1. toList()

    • чётко гарантирует неизменяемость

  2. collect(toList())

    • конкретный тип не гарантирован

Практическое правило

  1. Нужен изменяемый список → collect(toList())

  2. Нужна безопасность и иммутабельность → toList()

Краткий вывод

toList() — современный и безопасный способ, а collect(toList()) остаётся гибким вариантом, когда требуется изменяемость.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Java

    Java

Ключевые слова

#stream

#api

Подпишись на Java Developer в телеграм