Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpStGr 55 of 322 menu
◀ ▶

Группировка элементов потока в Java

Коллектор groupingBy строит карту, где ключ задает функция, а значение по умолчанию - список элементов с этим ключом. Вложенный коллектор меняет тип значения: вместо списка можно сразу получить количество или сумму.

Строки разложим по длине:

import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<String> words = List.of("go", "java", "io", "api"); Map<Integer, List<String>> byLength = words.stream() .collect(Collectors.groupingBy(String::length)); System.out.println(byLength); } }

С counting внутри группы сразу видно, сколько элементов попало в каждый ключ:

import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> nums = List.of(1, 2, 3, 4, 5, 6); Map<String, Long> parity = nums.stream() .collect(Collectors.groupingBy( n -> n % 2 == 0 ? "even" : "odd", Collectors.counting() )); System.out.println(parity); } }

Дан код:

var strings = List.of("api", "log", "ui", "kit");

Сгруппируйте строки по первой букве и выведите карту.

Дан код:

var nums = List.of(10, 11, 20, 21, 30);

Сгруппируйте по четности и посчитайте элементы в каждой группе.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить