java生成tree结构数据工具类

public class ComboTree implements Serializable{
    private String id;//:节点ID,对加载远程数据很重要。
    private String text;//:显示节点文本。
    private String parentid;//:节点ID,对加载远程数据很重要。
    private String state;//:节点状态,’open’ 或 ‘closed’,默认:’open’。如果为’closed’的时候,将不自动展开该节点。
    private boolean checked;//:表示该节点是否被选中。
    private String attributes;//: 被添加到节点的自定义属性。
    private List<ComboTree> children;//: 一个节点数组声明了若干节点。

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getParentid() {
        return parentid;
    }

    public void setParentid(String parentid) {
        this.parentid = parentid;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    public boolean isChecked() {
        return checked;
    }

    public void setChecked(boolean checked) {
        this.checked = checked;
    }

    public String getAttributes() {
        return attributes;
    }

    public void setAttributes(String attributes) {
        this.attributes = attributes;
    }

    public List<ComboTree> getChildren() {
        return children;
    }

    public void setChildren(List<ComboTree> children) {
        this.children = children;
    }


}
public class TreeUtils {

    private List<ComboTree> menuList = new ArrayList<ComboTree>();

    public TreeUtils(List<ComboTree> menuList) {
        this.menuList = menuList;
    }

    //建立树形结构
    public List<ComboTree> builTree() {
        List<ComboTree> treeMenus = new ArrayList<ComboTree>();
        for (ComboTree menuNode : getRootNode()) {
            menuNode = buildChilTree(menuNode);
            treeMenus.add(menuNode);
        }
        return treeMenus;
    }

    //递归,建立子树形结构
    private ComboTree buildChilTree(ComboTree pNode) {
        List<ComboTree> chilMenus = new ArrayList<ComboTree>();
        for (ComboTree menuNode : menuList) {
            if (menuNode.getParentid().equals(pNode.getId())) {
                chilMenus.add(buildChilTree(menuNode));
            }
        }
        pNode.setChildren(chilMenus);
        return pNode;
    }

    //获取根节点
    private List<ComboTree> getRootNode() {
        List<ComboTree> rootMenuLists = new ArrayList<ComboTree>();
        for (ComboTree menuNode : menuList) {
        	//800000000000:顶层父节点,可以改成动态传入
            if (menuNode.getParentid().equals("800000000000")) {
                rootMenuLists.add(menuNode);
            }
        }
        return rootMenuLists;
    }


}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以回答这个问题。以下是一个简单的 Java 工具类,用于生成树形结构数据: ``` import java.util.ArrayList; import java.util.List; public class TreeUtils { public static List<Node> buildTree(List<Node> nodes) { List<Node> roots = new ArrayList<>(); for (Node node : nodes) { if (node.getParentId() == null) { roots.add(node); } else { for (Node parent : nodes) { if (parent.getId().equals(node.getParentId())) { parent.addChild(node); break; } } } } return roots; } public static class Node { private String id; private String parentId; private String name; private List<Node> children = new ArrayList<>(); public Node(String id, String parentId, String name) { this.id = id; this.parentId = parentId; this.name = name; } public String getId() { return id; } public String getParentId() { return parentId; } public String getName() { return name; } public List<Node> getChildren() { return children; } public void addChild(Node child) { children.add(child); } } } ``` 这个工具类包含一个 `Node` 类,用于表示树形结构中的一个节点,以及一个 `buildTree` 方法,用于将节点列表转换为树形结构。使用方法如下: ``` List<TreeUtils.Node> nodes = new ArrayList<>(); nodes.add(new TreeUtils.Node("1", null, "Root")); nodes.add(new TreeUtils.Node("2", "1", "Child 1")); nodes.add(new TreeUtils.Node("3", "1", "Child 2")); nodes.add(new TreeUtils.Node("4", "2", "Grandchild 1")); nodes.add(new TreeUtils.Node("5", "2", "Grandchild 2")); List<TreeUtils.Node> roots = TreeUtils.buildTree(nodes); ``` 这将生成一个树形结构,其中根节点为 `Root`,它有两个子节点 `Child 1` 和 `Child 2`,`Child 1` 又有两个子节点 `Grandchild 1` 和 `Grandchild 2`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值