博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
组装树形结构循环寻找父子关系速度过慢的一种解决方案
阅读量:6609 次
发布时间:2019-06-24

本文共 1448 字,大约阅读时间需要 4 分钟。

hot3.png

提前循环一遍所有节点,将父子关系保持在map里

public String buildUserDistrictTree(List
districts){ //三级 Map
> map=new HashMap
>(); for(EypArea eypArea : districts){ if (map.get(eypArea.getParentId())!=null) { map.get(eypArea.getParentId()).add(eypArea); }else { map.put(eypArea.getParentId(), new ArrayList
()); map.get(eypArea.getParentId()).add(eypArea); } } List
roots=map.get("0"); Collections.sort(roots, new Comparator
(){ @Override public int compare(EypArea o1, EypArea o2) { return o1.getId().compareTo(o2.getId()); } }); String tree=scmOrganizationService.buildDistrictsTreeWithCashMap(roots, map); return tree; }public String buildDistrictsTreeWithCashMap(List
rootList,Map
> eypAreaMap){ Stack
stack=new Stack
(); JSONArray roots=JSONArray.fromObject(rootList); for (int i = 0; i < roots.size(); i++) { stack.push(roots.getJSONObject(i)); } while (!stack.isEmpty()) { JSONObject parent=stack.pop(); if (ParameterUtils.hasItem(eypAreaMap.get(parent.getString("id")))) { JSONArray jsonArray=JSONArray.fromObject(eypAreaMap.get(parent.getString("id"))); parent.put("children", jsonArray); parent.put("spread", false); jsonArray=parent.getJSONArray("children"); for (int i = 0; i < jsonArray.size(); i++) { stack.push(jsonArray.getJSONObject(i)); } } } return roots.toString(); }

转载于:https://my.oschina.net/u/3238650/blog/1479608

你可能感兴趣的文章
网络流,流水线模拟
查看>>
知识点笔记
查看>>
陈云川的OPENLDAP系列
查看>>
django 模型-----自连接
查看>>
P1197 [JSOI2008]星球大战
查看>>
urllib模块
查看>>
XML转义字符
查看>>
微信小程序之简单记账本开发记录(六)
查看>>
死锁和活锁
查看>>
JavaScript的简单继承实现案例
查看>>
第六篇 VIM你值得拥有!
查看>>
高淇java300集JAVA常用类作业
查看>>
<Linux命令行学习 第一节> CentOS在虚拟机的安装
查看>>
mysql设置字符集CHARACTER SET
查看>>
如何在Oracle中复制表结构和表数据
查看>>
[河南省ACM省赛-第四届] 序号互换 (nyoj 303)
查看>>
3 Oracle 32位客户端安装及arcgis连接
查看>>
Perl完全自学手册图文教程
查看>>
springmvc初始化数据
查看>>
python(5)字典
查看>>