Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Collectors.summingInt()

Сборщик, который суммирует числовое поле элементов.

Доступно с: Java 8

Синтаксис

static <T> Collector<T, ?, Integer> summingInt(ToIntFunction<? super T> mapper)

Параметры

ПараметрТипОписание
mapperToIntFunction<? 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.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.