Map<String, Map<String,Integer>> countSum 根据String 分组
时间: 2023-11-11 19:09:10 浏览: 128
,如何计算每个分组内Integer的和?
可以使用两层循环,外层循环遍历每个String分组,内层循环遍历每个分组中的Map,然后将每个Map中的Integer值相加,最后得到每个分组内的整数和。代码示例如下:
```
Map<String, Map<String, Integer>> countSum = new HashMap<>();
// 遍历每个String分组
for (String key : countSum.keySet()) {
int sum = 0;
Map<String, Integer> group = countSum.get(key);
// 遍历每个分组中的Map,并将每个Map中的Integer值相加
for (String innerKey : group.keySet()) {
sum += group.get(innerKey);
}
// 输出每个分组内的整数和
System.out.println("Group " + key + " sum: " + sum);
}
```
相关问题
Map<String, Map<String,Integer>> countSum 根据stream String 分组
并计算每组中每个 String 出现的次数,最终返回一个 Map<String, Map<String, Integer>>,其中外层 Map 的 key 是每个分组的名字,内层 Map 的 key 是每个字符串,value 是对应的出现次数。您可以通过以下代码实现:
Map<String, Map<String, Integer>> countSum = list.stream()
.collect(Collectors.groupingBy(s -> s.split(":")[0], // 根据指定规则进行分组
Collectors.toMap(
Function.identity(), // 使用每个字符串本身作为 key
s -> 1, // 统计初始值为 1
Integer::sum))); // 将同样的字符串次数累加
Map<String, Map<String,Integer>> countSum Steam根据key 分组代码实现
答案如下:
Map<String, Map<String, Integer>> countSumStream = dataList.stream()
.collect(Collectors.groupingBy(Data::getKey, Collectors.toMap(Data::getSubKey, Data::getValue,
Integer::sum)));
其中,Data为一个自定义数据类型,包含key、subKey和value三个属性。对数据流进行分组操作,使用Collectors.groupingBy方法,以Data对象的key值作为分组依据,得到一个Map类型的结果。这个结果中,键为key值,值为Map类型,内部再使用Collectors.toMap方法,以Data对象的subKey值作为键,Data对象的value值作为值,实现对数据求和的功能。最后得到的结果类型仍然是Map<String, Map<String, Integer>>。
阅读全文