Java List<Map<String, Object>>生成树
来源:互联网 发布:数据质量责任追究制度 编辑:程序博客网 时间:2024/06/05 02:08
/** * * @param list 所有元素的平级集合,map包含id和pid * @param pid 顶级节点的pid,可以为null * @param idName id位的名称,一般为id或者code * @return 树 */public static List<Map<String, Object>> getTree(List<Map<String, Object>> list, String pid, String idName) { List<Map<String, Object>> res = new ArrayList<Map<String,Object>>(); if (CollectionUtils.isNotEmpty(list)) for (Map<String, Object> map : list) { if(pid == null && map.get("p"+idName) == null || map.get("p"+idName) != null && map.get("p"+idName).equals(pid)){ String id = (String) map.get(idName); map.put("children", getTree(list, id, idName)); res.add(map); } } return res;}
测试代码:
List<String> pcodes = new ArrayList<>();pcodes.add(null);List<Map<String, Object>> list = new ArrayList<>();for (int i = 0, len = 10; i < len; i++){ Map<String, Object> map = new HashedMap(); map.put("code", "code" + i); map.put("name", "name" + i); map.put("pcode", pcodes.get(0)); pcodes.add("code" + i); Collections.shuffle(pcodes); list.add(map);}System.out.println(CommonUtils.getTree(list, null, "code"));
[ { pcode=null, code=code0, name=name0, children=[ { pcode=code0, code=code1, name=name1, children=[ { pcode=code1, code=code4, name=name4, children=[ ] }, { pcode=code1, code=code5, name=name5, children=[ ] } ] } ] }, { pcode=null, code=code2, name=name2, children=[ { pcode=code2, code=code6, name=name6, children=[ { pcode=code6, code=code7, name=name7, children=[ ] }, { pcode=code6, code=code8, name=name8, children=[ { pcode=code8, code=code9, name=name9, children=[ ] } ] } ] } ] }, { pcode=null, code=code3, name=name3, children=[ ] }]
0 0
- Java List<Map<String, Object>>生成树
- Java实现List<Map<String, Object>> 转Map<Object, Object>
- List<map<String,Object>>java遍历
- java list<Map<String,Object>>排序
- java统计数量List<Map<String,Object>
- java list<Map<String,Object>>排序
- List<Map<String, Object>>
- List<Map<String, Object>>
- List<Map<String, Object>>
- Java 中 List<Map<String,Object>> 转换 List<javaBean> 详解
- List<Map<String, Object>>是什么意思
- List<Map<String,Object>>排序
- 遍历List<Map<String, Object>>
- Map<String,Object> ,List 顺序排列
- List<Map<String, Object>>排序
- List<Map<String,Object>> 遍历
- 遍历List<Map<String,Object>>
- js遍历Java List<Map<String,Object>>集合
- C语言之左移和右移运算符
- SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换(上)
- 初步探索python
- commons-logging和slf4j两种日志门面的使用
- Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍
- Java List<Map<String, Object>>生成树
- iOS 为CollectionView的分区添加背景色
- 如何拆分pdf文件中的页面
- C++队列模板queue
- 形象理解python的lambda
- (0031) iOS 开发之图片压缩
- Android spannableStringBuilder用法整理,用来更改字体的样式
- 斐波拉契数列、汉诺塔,青蛙跳台阶
- 初识python(一)_快速改造,基础知识