Collectors.summingInt()
Сборщик, который суммирует числовое поле элементов.
Доступно с: Java 8
Синтаксис
static <T> Collector<T, ?, Integer> summingInt(ToIntFunction<? super T> mapper)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| mapper | ToIntFunction<? super T> | Получает из элемента число для суммы. |
Возвращаемое значение
Collector<T, ?, Integer>Сборщик суммы.
Примеры
Количество товаров на складах:
record Stock(String warehouse, int qty) {}
void main() {
var stock = List.of(new Stock("north", 5), new Stock("south", 3), new Stock("north", 7));
Map<String, Integer> totals = stock.stream()
.collect(Collectors.groupingBy(Stock::warehouse, TreeMap::new, Collectors.summingInt(Stock::qty)));
IO.println(totals);
}Результат:
{north=12, south=3}Примечания
Полезен внутри groupingBy(). Для простой суммы всего потока короче mapToInt(...).sum(). Есть варианты summingLong() и summingDouble().
См. также
- Collectors.groupingBy() — Сборщик, который раскладывает элементы по группам с общим ключом.
- IntStream.sum() — Складывает все числа потока.
- Collectors.averagingDouble() — Сборщик, который вычисляет среднее значение числового поля.
Вопросы и ответы по теме
В учебнике
- Группировка — Группировка элементов потока в Java — Collectors.groupingBy, подсчёт и суммы по группам, mapping, TreeMap и partitioningBy.