Map<Long, List<object>> stream 分组后求平均值
时间: 2023-11-11 14:30:45 浏览: 71
可以使用Java 8中的stream API和Collectors.groupingBy()方法将Map<Long, List<Object>>按照某个属性进行分组,然后使用Collectors.averagingDouble()方法求平均值。
具体实现可以参考以下代码:
```
Map<Long, List<Object>> map = ... // 待分组的Map
Map<Long, Double> averageMap = map.entrySet().stream()
.collect(Collectors.groupingBy(
Map.Entry::getKey,
Collectors.averagingDouble(entry -> {
List<Object> list = entry.getValue();
// 根据具体需求计算平均值
double sum = 0;
for (Object obj : list) {
// 计算每个对象的某个属性值之和
sum += ...;
}
return sum / list.size();
})
));
```
其中,Collectors.groupingBy()方法的第一个参数为分组的key,第二个参数为对每个分组进行的操作,这里使用Collectors.averagingDouble()方法求平均值。
注意,这里使用了entrySet().stream()方法将Map转换为Stream进行操作,也可以使用map.values().stream()方法直接对Map的值进行操作。
阅读全文