根据树节点生成树

0
Java JSON C/C++ list 生成树 4184 次浏览
 public String makeupTrees(List jsonNodes){
		HashSet existsIdSet=new HashSet();
		Map jsonNodeTrees=new HashMap();
			for(JsonNode srcNode:jsonNodes){
				if(srcNode.getChildren().size()<0){
					continue;
				}
				JsonNode jsonNode=srcNode.getChildren().get(0);
				String expressId=jsonNode.getExpressId();
				String parentId=srcNode.getExpressId();
				if(existsIdSet.contains(parentId)){
					for (Entry entry : jsonNodeTrees.entrySet()){
						JsonNode destJsonNode=getJsonNode(entry.getValue(), parentId);
						if(null!=destJsonNode){
							destJsonNode.getChildren().add(jsonNode);
							break;
						}
					}
				}else {
					jsonNodeTrees.put(parentId, srcNode);
				}
				
				if(existsIdSet.contains(expressId)){
					JsonNode destJsonNode=jsonNodeTrees.remove(expressId);
					if(null!=destJsonNode){
						jsonNode.getChildren().addAll(destJsonNode.getChildren());
					}
				}
				existsIdSet.add(parentId);
				existsIdSet.add(expressId);
			}
			if(jsonNodeTrees.size()>0){
				for (Entry entry : jsonNodeTrees.entrySet()){
					return entry.getValue().toJsonString();
				}
			}
			return "";
	}
其中树节点JsonNode有三个属性,自身ID  自身名称  子节点列表



请尽量让自己的答案能够对别人有帮助

2个答案

默认排序 按投票排序