Gymterview
junior

Для чего в стримах предназначены методы map, mapToInt, mapToDouble, mapToLong?

map() — промежуточная операция, которая преобразует каждый элемент стрима с помощью заданной функции. Результат map() — новый стрим с преобразованными элементами.

mapToInt(), mapToDouble(), mapToLong() — специализированные аналоги map(), которые возвращают примитивный стрим (IntStream, DoubleStream, LongStream). Их основное преимущество — отсутствие автобоксинга и доступ к дополнительным методам (sum(), average(), max(), min()).

Пример
Stream.of("12", "22", "4", "444", "123")
    .mapToInt(Integer::parseInt)
    .toArray(); // [12, 22, 4, 444, 123]

Обратное преобразование из примитивного стрима в объектный выполняется методом mapToObj() или boxed().

На собеседовании: подчеркните, что mapToInt возвращает IntStream, а не Stream<Integer>, и объясните выгоду: нет autoboxing и доступны агрегатные методы вроде sum().