Для чего в стримах предназначены методы map(), mapToInt(), mapToDouble() и mapToLong()?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Эти методы используются для преобразования элементов стрима из одного типа в другой. Они применяют функцию к каждому элементу и возвращают новый стрим с преобразованными элементами.
-
map(Function<? super T, ? extends R> mapper): Преобразует стрим объектов типаTв стрим объектов типаR.mapper— это функция, которая принимает элемент типаTи возвращает элемент типаR.// Пример: преобразование стрима строк в их длины List<String> words = Arrays.asList("hello", "world"); Stream<Integer> lengths = words.stream() .map(String::length); -
mapToInt(ToIntFunction<? super T> mapper): Преобразует стрим объектов типаTв специализированный стрим примитивныхintзначений (IntStream).mapper— это функция, которая принимает элемент типаTи возвращаетint.// Пример: преобразование стрима строк в их хэш-коды (int) List<String> words = Arrays.asList("hello", "world"); IntStream hashCodes = words.stream() .mapToInt(String::hashCode); -
mapToDouble(ToDoubleFunction<? super T> mapper): Преобразует стрим объектов типаTв специализированный стрим примитивныхdoubleзначений (DoubleStream).mapper— это функция, которая принимает элемент типаTи возвращаетdouble.// Пример: преобразование стрима строк в их длину как double List<String> words = Arrays.asList("hello", "world"); DoubleStream doubleLengths = words.stream() .mapToDouble(String::length); // Результат будет double -
mapToLong(ToLongFunction<? super T> mapper): Преобразует стрим объектов типаTв специализированный стрим примитивныхlongзначений (LongStream).mapper— это функция, которая принимает элемент типаTи возвращаетlong.// Пример: преобразование стрима строк в их длину как long List<String> words = Arrays.asList("hello", "world"); LongStream longLengths = words.stream() .mapToLong(String::length); // Результат будет long
Использование mapToInt, mapToDouble и mapToLong предпочтительнее, когда результат преобразования является примитивным числовым типом, так как они работают с более эффективными специализированными стримами, которые избегают упаковки/распаковки примитивов в объекты.