id、pid转树结构children格式处理,支持二级、三级

描述

现在大多数的id、pid数据中,id都是唯一值,都比较好处理。本文介绍的是可兼容id非唯一值的处理方式,同时子级的pid父级的id。数据示例:


let datalist = [

      {

          "name": "武汉",

          "pid": "148",

          "id": "160"              //父级id

      },

      {

          "name": "洪山",

          "pid": "160",          //子级pid

          "id": "160"

      }

]


提示:以下是本篇文章正文内容,下面案例可供参考

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用递归算法来实现Java IDPID三级联动展示结构树。下面是一个示例代码: ```java import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class TreeDemo { public static void main(String[] args) { List<Node> nodeList = new ArrayList<>(); nodeList.add(new Node(1, 0, "Root")); nodeList.add(new Node(2, 1, "Node 1")); nodeList.add(new Node(3, 1, "Node 2")); nodeList.add(new Node(4, 2, "Node 1.1")); nodeList.add(new Node(5, 2, "Node 1.2")); nodeList.add(new Node(6, 3, "Node 2.1")); Map<Integer, List<Node>> map = new HashMap<>(); for (Node node : nodeList) { if (!map.containsKey(node.getPid())) { map.put(node.getPid(), new ArrayList<>()); } map.get(node.getPid()).add(node); } List<Node> rootList = map.get(0); for (Node node : rootList) { displayTree(node, map, 0); } } public static void displayTree(Node node, Map<Integer, List<Node>> map, int level) { StringBuilder prefix = new StringBuilder(); for (int i = 0; i < level; i++) { prefix.append(" "); } System.out.println(prefix.toString() + node.getName()); if (map.containsKey(node.getId())) { List<Node> childList = map.get(node.getId()); for (Node child : childList) { displayTree(child, map, level + 1); } } } } class Node { private int id; private int pid; private String name; public Node(int id, int pid, String name) { this.id = id; this.pid = pid; this.name = name; } public int getId() { return id; } public int getPid() { return pid; } public String getName() { return name; } } ``` 以上代码中,`Node` 类表示树节点,包含节点的 ID、父节点的 ID 和节点名称。`TreeDemo` 类中的 `main` 方法演示了如何构建节点列表,并利用递归算法展示结构树。首先,将节点列表按照父节点 ID 分组存储在 `Map` 中。然后,从根节点开始递归展示每个节点及其子节点,通过缩进表示层级关系。 你可以根据自己的需求修改节点的属性和展示方式。注意,在实际应用中,可能需要从数据库或其他数据源获取节点数据,并将展示方式适配到前端页面中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值