Назад к вопросам
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());
Здесь элементы проходят по цепочке один раз: сначала обрезаются пробелы, затем преобразуются в верхний регистр, и результат собирается в список.