tree转为list

将树转为列表

    public void tree2list(){
        tree2list(list2tree()).forEach(System.out :: println);
    }

    public List<ParentChildDTO> tree2list(List<LinkVO> tree){
        List<ParentChildDTO> list = new ArrayList<>();
        tree.stream().forEach(i -> {
            getChild(i,"0",list);
        });
        return list;
    }

    public void getChild(LinkVO root,String parentId,List<ParentChildDTO> list){
        ParentChildDTO child = new ParentChildDTO();
        child.setId(root.getNameId().getId());
        child.setName(root.getNameId().getName());
        child.setParentId(parentId);
        list.add(child);
        ActionUtils.doIfTrue(null != root && !root.getChildList().isEmpty(),() -> {
            root.getChildList().forEach(i -> getChild(i,root.getNameId().getId(),list));
        });
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的List转为多个树的过程可以通过以下方法来实现: 1. 首先,我们需要定义一个树节点的类,包含节点的值以及子节点列表,例如: ``` public class TreeNode { private int value; private List<TreeNode> children; public TreeNode(int value) { this.value = value; children = new ArrayList<>(); } // getter和setter方法 } ``` 2. 接下来,我们需要编写一个方法来将List转为多个树,例如: ``` public List<TreeNode> convertListToTrees(List<Integer> list) { List<TreeNode> trees = new ArrayList<>(); Map<Integer, TreeNode> nodeMap = new HashMap<>(); // 先创建树节点并将其放入映射表中 for (Integer value : list) { TreeNode node = new TreeNode(value); nodeMap.put(value, node); } // 构建树结构 for (Integer value : list) { TreeNode node = nodeMap.get(value); // 如果当前节点有父节点,则将其添加到父节点的子节点列表中 if (nodeMap.containsKey(value - 1)) { TreeNode parent = nodeMap.get(value - 1); parent.getChildren().add(node); } else { // 否则,当前节点为根节点,直接添加到多个树列表中 trees.add(node); } } return trees; } ``` 3. 最后,我们可以通过调用上述方法来将List转为多个树,例如: ``` List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9); List<TreeNode> trees = convertListToTrees(list); // 遍历多个树,并输出每个树的结构 for (TreeNode tree : trees) { printTree(tree); } ``` 注意:上述方法假设输入的List中的节点值是连续的整数,并且根节点的值为1,父节点的值比其子节点小1,子节点的值比其父节点大1。如果输入的List不满足这些条件,则需要进行相应的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值