РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
542 of 1163 menu

Метод mapping

Метод mapping класса Collectors позволяет преобразовать каждый элемент потока с помощью заданной функции, а затем собрать полученные значения в новую коллекцию. Первым параметром метод принимает функцию-преобразователь (mapper), которая применяется к каждому элементу. Вторым параметром передается нижестоящий коллектор (downstream), который определяет, каким образом будут собраны уже преобразованные элементы.

Метод mapping особенно полезен в связке с группировкой groupingBy, когда нужно не просто сгруппировать элементы, а предварительно преобразовать их в другое значение.

Синтаксис

Collectors.mapping(mapper, downstream)

Пример

Давайте преобразуем каждую строку в списке в её длину и соберем результат в список:

import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<String> list = List.of("abcde", "ab", "abc", "a"); List<Integer> res = list.stream() .collect(Collectors.mapping(s -> s.length(), Collectors.toList())); System.out.println(res); } }

Результат выполнения кода:

[5, 2, 3, 1]

Пример

Давайте сгруппируем строки по длине, а внутри каждой группы преобразуем их в верхний регистр:

import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<String> list = List.of("abcde", "ab", "abc", "a"); Map<Integer, List<String>> res = list.stream() .collect(Collectors.groupingBy( s -> s.length(), Collectors.mapping(s -> s.toUpperCase(), Collectors.toList()) )); System.out.println(res); } }

Результат выполнения кода:

{1=[A], 2=[AB], 3=[ABC], 5=[ABCDE]}

Пример

Давайте преобразуем числа в их строковое представление и соберем результат во множество:

import java.util.List; import java.util.Set; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> list = List.of(1, 2, 3, 4, 5); Set<String> res = list.stream() .collect(Collectors.mapping(n -> "num" + n, Collectors.toSet())); System.out.println(res); } }

Результат выполнения кода:

[num1, num2, num3, num4, num5]

Смотрите также

  • класс Collectors,
    который содержит методы для сборки элементов потока
  • метод groupingBy,
    который группирует элементы по ключу
  • метод flatMapping,
    который преобразует элементы в потоки и объединяет их
  • метод toList,
    который собирает элементы в список
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить