Luca Foppiano:
He una List<Map<String, Double>>
representación de algunos cálculos que son almacenados por 'categoría' en la Map
llave.
[{a: 1, b:2}, {a:4, b:5})
Quiero calcular el promedio de 'categoría', algo así como: {a: 2.5 , b: 3.5}
.
Probé con algo como
.collector(Collectors.groupingBy..)
pero las primeras solicitudes de parámetros para proporcionar la función de discriminación, que no sé cómo pescar desde el Map
artículo.
¿Alguna idea de cómo hacer eso con Java8? ¡Gracias!
Eran :
Se puede utilizar flatMap
para extraer todas las entradas de todos los mapas en una sola Stream
. A continuación, puede agruparlos por la llave y se calcula el promedio de los valores.
Map<String,Double> average =
list.stream()
.flatMap(m->m.entrySet().stream())
.collect(Collectors.groupingBy(Map.Entry::getKey,
Collectors.averagingDouble(Map.Entry::getValue)));