[英]How to take the average of values of several HashMaps in Array of HashMaps efficiently?
我有一个HashMaps列表
List<Map<String, Object>> arrOfMaps = new ArrayList<>();
所有HashMap都具有相同的键,并且所有HashMap中的键数均相同。
现在,我想连续获取HashMap中所有键的所有值的平均值。
例如,假设下面是我从HashMaps数组中获得的HashMaps
arrOfMaps[0]={
A:1,
B:1
}
arrOfMaps[1]={
A:4,
B:5
}
arrOfMaps[2]={
A:4,
B:7
}
.
.
.
我想从3个连续的HashMap中获得A的平均值,即A_avg =(1 + 4 + 4)/ 3,B_avg =(1 + 5 + 7)/ 3等。
有什么有效的方法可以做到这一点?
您可以使用流找到平均值:
Map<String, Double> average = arrOfMaps.stream()
.flatMap(map -> map.entrySet().stream())
.collect(Collectors.groupingBy(Map.Entry::getKey,
Collectors.averagingInt(value -> (Integer)(value.getValue()))));
System.out.println(average); // {A=3.0, B=4.333333333333333}
使用flatMap
您将获得所有传入地图的输入流集。 接下来,您将按字符串键groupingBy
并分别使用groupingBy
和averagingInt
通过每个键获取平均值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.