Map <String,Map<String, List<ReportPlan>>> list转多级数据结构
时间: 2023-10-14 16:30:24 浏览: 119
可以使用循环和逐层创建Map的方式将Map<String,Map<String,List<ReportPlan>>>转换为多级数据结构,具体实现如下:
```
// 假设原始Map为map
Map<String,Map<String,List<ReportPlan>>> map = ...;
// 创建多级数据结构result,初始为空
List<Node> result = new ArrayList<>();
// 循环遍历原始Map的每个键值对
for (Map.Entry<String,Map<String,List<ReportPlan>>> entry1 : map.entrySet()) {
String key1 = entry1.getKey();
Map<String,List<ReportPlan>> subMap1 = entry1.getValue();
// 创建一级节点
Node node1 = new Node(key1);
// 循环遍历一级节点的子Map的每个键值对
for (Map.Entry<String,List<ReportPlan>> entry2 : subMap1.entrySet()) {
String key2 = entry2.getKey();
List<ReportPlan> reportPlans = entry2.getValue();
// 创建二级节点
Node node2 = new Node(key2);
// 循环遍历二级节点的子List的每个元素
for (ReportPlan reportPlan : reportPlans) {
// 创建三级节点
Node node3 = new Node(reportPlan);
// 将三级节点添加到二级节点的子节点中
node2.addChild(node3);
}
// 将二级节点添加到一级节点的子节点中
node1.addChild(node2);
}
// 将一级节点添加到结果集中
result.add(node1);
}
// 多级数据结构转换完成,result即为最终结果
```
其中,Node类可以自定义实现,用于表示多级数据结构的节点,示例代码如下:
```
public class Node {
private String name;
private ReportPlan reportPlan;
private List<Node> children;
public Node(String name) {
this.name = name;
}
public Node(ReportPlan reportPlan) {
this.reportPlan = reportPlan;
}
public void addChild(Node child) {
if (children == null) {
children = new ArrayList<>();
}
children.add(child);
}
// 省略getter和setter
}
```
阅读全文