如何将嵌套的Map数据结构 `Map<级别, Map<角色, 人员>>` 转换为一个扁平化的 `Map<角色, List<人员>>`,以便每个角色关联到其对应的多个人员列表?
时间: 2024-12-15 19:23:42 浏览: 1
将嵌套的Map转换为扁平化形式,可以遍历原始Map,并根据角色键将人员添加到对应的List中。这里是一个简单的步骤描述:
1. 创建一个新的空Map,`Map<角色, List<人员>>`,用于存储转换后的结果。
2. 遍历原始Map `Map<级别, Map<角色, 人员>>`,对于每一个`级别`下的`Map<角色, 人员>`:
a. 获取当前级别的键值对集合。
b. 对于集合中的每一项 `(角色, 人员)`:
i. 如果目标Map中已经有了这个`角色`,就将其`人员`添加到对应的角色列表里。
ii. 如果目标Map中还没有这个`角色`,就创建一个新的`List<人员>`并将`人员`加入,然后将新列表作为值存入目标Map。
3. 完成遍历后,返回转换后的扁平化`Map<角色, List<人员>>`。
以下是伪代码示例:
```java
Map<String, List<Person>> flatMap = new HashMap<>();
for (Map.Entry<String, Map<String, Person>> entry : nestedMap.entrySet()) {
for (Map.Entry<String, Person> roleEntry : entry.getValue().entrySet()) {
String role = roleEntry.getKey();
Person person = roleEntry.getValue();
if (flatMap.containsKey(role)) {
flatMap.get(role).add(person);
} else {
List<Person> newList = new ArrayList<>();
newList.add(person);
flatMap.put(role, newList);
}
}
}
```
阅读全文