递归实现获取前端treejson格式数据

递归实现获取前端treejson格式数据

2023年6月22日发(作者:)

递归实现获取前端treejson格式数据递归实现获取前端tree json格式数据问题描述为了表⽰各个业务实体的层级关系,后台系统中很多表结构设计的时候遵循类似下⾯这种结构。idpidname然⽽前端需要的数据结构为Tree JSON结构如下:[{ "id": 1, "name": "⼥装", "children": [{ "id": 3, "name": "⼥⼠裙装", "children": [{ "id": 5, "name": "背带裙", "children": [] }] }, { "id": 4, "name": "⼥⼠上装", "children": [{ "id": 6, "name": "⽺⽑衫", "children": [] }] }]}, { "id": 2, "name": "男装", "children": []}]思路递归思路:明确递归终⽌条件(list中筛选出pid的结果list为空)给出递归终⽌时的处理办法(不处理)提取重复的逻辑(拼装tree节点,添加到tree节点List中)⾸先确认递归函数的⼊参:需要查询出来的扁平的业务实体List需要List结果实体集合,实体⾥⾯三个字段(可⾃定义字段名)id, name, children。这⾥为了简便⽤了Map查询当前层级的pid代码实现import Mapper;import ist;import HashMap;import HashMap;import ;import tors;public class ListToTreeTest { public static void main(String[] args) throws Exception { List list = getList(); ArrayList> tree = new ArrayList<>(); loadTree(list, tree, 0l); String s = new ObjectMapper().writeValueAsString(tree); n(s); } public static void loadTree(List list, List> listTreeNode, Long pid) { LinkedHashMap tmpMap = null; //从list中筛选出特定pid的Item集合 List tmpList = ().filter(x -> () == pid).collect(()); for(Item item : tmpList) { tmpMap = new LinkedHashMap<>(); ("id", ()); ("name", e()); ("children", new ArrayList>()); (tmpMap); //children中的每⼀项递归查询,此时children中的每⼀项的pid为上⾯的id loadTree(list, (List>) ("children"), (Long) ("id")); } } //获取测试数据 public static List getList() { Item parent1 = new Item(); (1l); e("⼥装"); (0l); Item parent2 = new Item(); (2l); e("男装"); (0l); Item parent3 = new Item(); (3l); e("⼥⼠裙装"); (1l); Item parent4 = new Item(); (4l); e("⼥⼠上装"); (1l); Item parent5 = new Item(); (5l); e("背带裙"); (3l); Item parent6 = new Item(); (6l); e("⽺⽑衫"); (4l); ArrayList items = new ArrayList<>(); (parent1); (parent2); (parent3); (parent4); (parent5); (parent5); (parent6); return items; }}//表结构实体class Item { private Long id; private String name; private Long pid; public Long getId() { return id; } public void setId(Long id) { = id; } public String getName() { return name; } public void setName(String name) { = name; } public Long getPid() { return pid; } public void setPid(Long pid) { = pid; }}

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687385924a6182.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信