Ответ
Метод map() возвращает новый объект Stream<R> (поток преобразованных элементов). Это промежуточная (lazy) операция, которая не изменяет исходную коллекцию (ArrayList).
Логика работы:
- Исходный список преобразуется в
Stream<E>. map(Function<E, R> mapper)применяет функцию к каждому элементу и возвращаетStream<R>с результатами.- Для материализации потока в новую коллекцию требуется терминальная операция (например,
collect).
Пример:
List<String> originalList = Arrays.asList("java", "stream", "api");
// map() возвращает Stream<String>
Stream<String> upperCaseStream = originalList.stream()
.map(String::toUpperCase); // Промежуточная операция, вычисления еще не было
// Терминальная операция collect() запускает обработку и создает новый List
List<String> newList = upperCaseStream.collect(Collectors.toList());
System.out.println(originalList); // [java, stream, api] (без изменений)
System.out.println(newList); // [JAVA, STREAM, API]
Ключевой вывод: map() работает с потоком, а не с коллекцией напрямую. Исходный ArrayList остается неизменным.