Sobes.tech
Назад к вопросам
Senior
4

Два map и один collect — сколько раз стрим пройдётся по исходной коллекции?

Компании, где спрашивали
SSP Soft

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

sobes.tech AI

В Java Stream операции map являются промежуточными и ленивыми, а collect — терминальной. При цепочке из двух map и одного collect проход по исходной коллекции происходит один раз.

Это связано с тем, что Stream не выполняет промежуточные операции сразу, а строит конвейер обработки. Только при вызове терминальной операции (collect) происходит единичный проход, во время которого применяются все промежуточные операции последовательно к каждому элементу.

Пример:

List<String> result = list.stream()
    .map(s -> s.trim())
    .map(s -> s.toUpperCase())
    .collect(Collectors.toList());

Здесь элементы проходят по цепочке один раз: сначала обрезаются пробелы, затем преобразуются в верхний регистр, и результат собирается в список.