java递归工具类

/**
 * author :sq
 */
public class TreeDakou {

    private List<Node> data = new ArrayList<Node>();
    private List<Node> nodes;

    public TreeDakou(List<SysMenu> menus){
        nodes = new ArrayList<Node>();
        for (SysMenu menu : menus) {
            Node node = new Node();
            node.setId(menu.getMenuId());
            node.setParentId(menu.getParentId());
            node.setText(menu.getMenuName());
            node.setHref(menu.getMenuUrl());
            node.setIcon(menu.getMenuIcon());
            NodeState state = new NodeState();
            if(menu.getMuflag()!=null && menu.getMuflag()>0){
                state.setChecked(true);
            }
            node.setState(state);
            nodes.add(node);
        }
        this.nodes = nodes;
    }


    public List<Node> buildTree(){
        for (Node node : nodes) {
            if (node.getParentId() == null) {
                build(node);
                data.add(node);
            }
        }
        return data;
     }

    private void build(Node node){
        List<Node> children = getChildren(node);
        if (!children.isEmpty()) {
            node.setNodes(children);
            for (Node child : children) {
                build(child);
            }

        }
    }


    private List<Node> getChildren(Node node){
        List<Node> children = new ArrayList<Node>();
        for (Node child : nodes) {
            Integer id = node.getId();
            if (id.equals(child.getParentId())) {
                children.add(child);
             }
        }
        return children;
    }
}

猜你喜欢

转载自blog.csdn.net/su717854075/article/details/81668158