Collectors.averagingDouble()
Сборщик, который вычисляет среднее значение числового поля.
Доступно с: Java 8
Синтаксис
static <T> Collector<T, ?, Double> averagingDouble(ToDoubleFunction<? super T> mapper)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| mapper | ToDoubleFunction<? 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.