Метод counting
Метод counting класса Collectors возвращает коллектор, который подсчитывает количество элементов в потоке. Результатом работы коллектора является значение типа Long. Метод не принимает параметров. Обычно используется в сочетании с методами groupingBy и partitioningBy для подсчета элементов в каждой группе.
Синтаксис
Collectors.counting()
Пример
Давайте подсчитаем количество элементов в списке:
import java.util.List;
import java.util.stream.Collectors;
public class Main
{
public static void main(String[] args)
{
List<String> list = List.of("a", "b", "c", "d", "e");
Long count = list.stream().collect(Collectors.counting());
System.out.println(count);
}
}
Результат выполнения кода:
5
Пример
Давайте подсчитаем количество элементов в каждой группе при группировке по длине строки:
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("a", "bb", "cc", "ddd", "ee");
Map<Integer, Long> res = list.stream()
.collect(Collectors.groupingBy(String::length, Collectors.counting()));
System.out.println(res);
}
}
Результат выполнения кода:
{1=1, 2=3, 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<Integer> list = List.of(1, 2, 3, 4, 5);
Map<Boolean, Long> res = list.stream()
.collect(Collectors.partitioningBy(n -> n % 2 == 0, Collectors.counting()));
System.out.println(res);
}
}
Результат выполнения кода:
{false=3, true=2}
Смотрите также
-
класс
Collectors,
который содержит коллекторы для потоков -
метод
groupingBy,
который группирует элементы потока -
метод
partitioningBy,
который разделяет элементы потока на две группы -
метод
toList,
который собирает элементы потока в список