Encodera

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

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

Справочник Java

Collectors.averagingDouble()

Сборщик, который вычисляет среднее значение числового поля.

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

Синтаксис

static <T> Collector<T, ?, Double> averagingDouble(ToDoubleFunction<? super T> mapper)

Параметры

ПараметрТипОписание
mapperToDoubleFunction<? super T>Получает из элемента число.

Возвращаемое значение

Collector<T, ?, Double>Сборщик среднего значения.

Примеры

Средняя оценка по предметам:

record Grade(String subject, double value) {}
 
void main() {
    var grades = List.of(new Grade("math", 4), new Grade("art", 5),
        new Grade("math", 5), new Grade("art", 3));
    Map<String, Double> avg = grades.stream()
        .collect(Collectors.groupingBy(Grade::subject, TreeMap::new,
            Collectors.averagingDouble(Grade::value)));
    IO.println(avg);
}

Результат:

{art=4.0, math=4.5}

Примечания

Для пустого потока возвращает 0.0, а не пустой результат. Есть варианты averagingInt() и averagingLong() — они тоже возвращают Double.

См. также

  • Collectors.summingInt() — Сборщик, который суммирует числовое поле элементов.
  • IntStream.average() — Вычисляет среднее арифметическое чисел потока.
  • Collectors.groupingBy() — Сборщик, который раскладывает элементы по группам с общим ключом.

Вопросы и ответы по теме

В учебнике

  • Группировка — Группировка элементов потока в Java — Collectors.groupingBy, подсчёт и суммы по группам, mapping, TreeMap и partitioningBy.

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

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