Map<String, Map<String,Integer>> countSum stream 转数组
时间: 2023-11-11 10:10:13 浏览: 45
可以使用以下代码将Map<String, Map<String,Integer>> countSum转换为二维数组:
```
int size = countSum.keySet().size();
String[] keys = countSum.keySet().toArray(new String[size]);
int[][] count = new int[size][size];
for (int i = 0; i < size; i++) {
Map<String, Integer> innerMap = countSum.get(keys[i]);
for (int j = 0; j < size; j++) {
count[i][j] = innerMap.getOrDefault(keys[j], 0);
}
}
```
这段代码首先获取countSum的键集合和大小,然后使用toArray()方法将键集合转换为数组。接着使用两重循环遍历数组,通过getOrDefault()方法获取对应的计数值,将其存入二维数组中。
相关问题
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 根据String 分组
,如何计算每个分组内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);
}
```