tree是上下级结构,list对象对象的ID只有tree的末节点ID
时间: 2024-02-18 10:03:49 浏览: 73
Vue拿到后端返回的List,渲染出element-tree树结构
5星 · 资源好评率100%
好的,根据您的补充说明,list对象的ID只有树状结构的末节点ID。那么在统计每一个节点下数量1和数量2的数据时,我们需要遍历整个树状结构,而不是仅仅遍历list对象中包含的节点。
以下是Java语言的示例代码实现:
```
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CountData {
public static void countData(Map<String, Object> node, Map<String, Map<String, Integer>> objList) {
String nodeId = node.get("ID").toString();
Map<String, Integer> nodeObj = objList.get(nodeId);
for (Map<String, Object> childNode : (List<Map<String, Object>>) node.get("子节点集合")) {
countData(childNode, objList);
String childId = childNode.get("ID").toString();
Map<String, Integer> childObj = objList.get(childId);
nodeObj.put("数量1", nodeObj.get("数量1") + childObj.get("数量1"));
nodeObj.put("数量2", nodeObj.get("数量2") + childObj.get("数量2"));
}
}
public static void main(String[] args) {
// 树状结构的对象
Map<String, Object> tree = ...;
// list对象
Map<String, Map<String, Integer>> objList = new HashMap<>();
// 初始化objList的数据
initObjList(tree, objList);
// 统计每一个节点下数量1和数量2的数据
countData(tree, objList);
// 输出结果
for (String nodeId : objList.keySet()) {
System.out.println("节点" + nodeId + "的数量1为:" + objList.get(nodeId).get("数量1"));
System.out.println("节点" + nodeId + "的数量2为:" + objList.get(nodeId).get("数量2"));
}
}
public static void initObjList(Map<String, Object> node, Map<String, Map<String, Integer>> objList) {
String nodeId = node.get("ID").toString();
Map<String, Integer> nodeObj = new HashMap<>();
nodeObj.put("数量1", 0);
nodeObj.put("数量2", 0);
objList.put(nodeId, nodeObj);
for (Map<String, Object> childNode : (List<Map<String, Object>>) node.get("子节点集合")) {
initObjList(childNode, objList);
}
}
}
```
在这个示例代码中,`tree`变量表示树状结构的对象,是一个字典类型;`objList`变量表示list对象,是一个字典类型,其键为ID,值为包含数量1和数量2的字典对象。该函数会递归地遍历树状结构的对象,并将每个节点的数量1和数量2累加到对应的列表对象中。最后输出每个节点的数量1和数量2数据。
阅读全文