Метод summarizingInt
Метод summarizingInt класса Collectors
возвращает коллектор, который применяет к каждому
элементу потока функцию-маппер, приводящую элемент
к типу int, и собирает по полученным значениям
полную статистику. В первый параметр мы передаем
функцию-маппер, которая извлекает из элемента потока
целочисленное значение. Результатом работы коллектора
является объект класса IntSummaryStatistics,
содержащий количество элементов, сумму, минимальное
значение, максимальное значение и среднее арифметическое.
У объекта IntSummaryStatistics доступны методы
getCount, getSum, getMin,
getMax и getAverage.
Синтаксис
Collectors.summarizingInt(mapper)
Пример
Давайте соберем статистику по числам из списка:
import java.util.List;
import java.util.IntSummaryStatistics;
import java.util.stream.Collectors;
public class Main
{
public static void main(String[] args)
{
List<Integer> list = List.of(1, 2, 3, 4, 5);
IntSummaryStatistics res = list.stream()
.collect(Collectors.summarizingInt(n -> n));
System.out.println(res.getCount());
System.out.println(res.getSum());
System.out.println(res.getMin());
System.out.println(res.getMax());
System.out.println(res.getAverage());
}
}
Результат выполнения кода:
5
15
1
5
3.0
Пример
Давайте выведем объект статистики целиком, чтобы увидеть его строковое представление:
import java.util.List;
import java.util.IntSummaryStatistics;
import java.util.stream.Collectors;
public class Main
{
public static void main(String[] args)
{
List<Integer> list = List.of(1, 2, 3, 4, 5);
IntSummaryStatistics res = list.stream()
.collect(Collectors.summarizingInt(n -> n));
System.out.println(res);
}
}
Результат выполнения кода:
IntSummaryStatistics{count=5, sum=15, min=1, average=3.000000, max=5}
Пример
Давайте применим маппер, который извлекает длину строк, и получим статистику по длинам:
import java.util.List;
import java.util.IntSummaryStatistics;
import java.util.stream.Collectors;
public class Main
{
public static void main(String[] args)
{
List<String> list = List.of("abcde", "12345", "abc", "1");
IntSummaryStatistics res = list.stream()
.collect(Collectors.summarizingInt(String::length));
System.out.println(res.getCount());
System.out.println(res.getSum());
System.out.println(res.getMin());
System.out.println(res.getMax());
System.out.println(res.getAverage());
}
}
Результат выполнения кода:
4
14
1
5
3.5
Смотрите также
-
класс
Collectors,
который содержит готовые коллекторы -
метод
counting,
который считает количество элементов -
метод
reducing,
который сворачивает элементы в одно значение -
метод
mapping,
который преобразует элементы перед сбором