package com.java2nb.common.utils; import com.java2nb.common.domain.Tree; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class BuildTree { public static Tree build(List> nodes) { if (nodes == null) { return null; } List> topNodes = new ArrayList>(); for (Tree children : nodes) { String pid = children.getParentId(); if (pid == null || "0".equals(pid)) { topNodes.add(children); continue; } for (Tree parent : nodes) { String id = parent.getId(); if (id != null && id.equals(pid)) { parent.getChildren().add(children); children.setHasParent(true); parent.setChildren(true); continue; } } } Tree root = new Tree(); if (topNodes.size() == 1) { root = topNodes.get(0); } else { root.setId("-1"); root.setParentId(""); root.setHasParent(false); root.setChildren(true); root.setChecked(true); root.setChildren(topNodes); root.setText("顶级节点"); Map state = new HashMap<>(16); state.put("opened", true); root.setState(state); } return root; } public static List> buildList(List> nodes, String idParam) { if (nodes == null) { return null; } List> topNodes = new ArrayList>(); for (Tree children : nodes) { String pid = children.getParentId(); if (pid == null || idParam.equals(pid)) { topNodes.add(children); continue; } for (Tree parent : nodes) { String id = parent.getId(); if (id != null && id.equals(pid)) { parent.getChildren().add(children); children.setHasParent(true); parent.setChildren(true); continue; } } } return topNodes; } }