Map<Long, List<object>> stream 分组后求平均值
时间: 2023-11-11 14:30:45 浏览: 45
可以使用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的值进行操作。
相关推荐
![jar](https://img-home.csdnimg.cn/images/20210720083455.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)