Java树形结构解析
由于工作中好多地方需要树状结构数据,在参考了网上递归实现和数据库存储过程实现,都不太满意。突然想到zTree也有解析该类数据的要求,所以在阅读了zTree源码的前提了,按照他的实现原理,写了一个java版的实现方案
@SuppressWarnings("unchecked")
public List<Map<String, Object>> parseTree(List<Map<String, Object>> list) {
List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();
Map<String, Object> tmpMap = new HashMap<String, Object>();
for (int i = 0, l = list.size(); i < l; i++) {
tmpMap.put(String.valueOf(list.get(i).get("id")), list.get(i));
}
for (int i = 0, l = list.size(); i < l; i++) {
Map<String, Object> map = list.get(i);
//tmpMap存储的均为id为key的键值对,如果以pid为key可以取出对象,则表明该元素是父级元素
if(tmpMap.get(map.get("pid")) != null && (map.get("id") != map.get("pid"))){
//给当前这个父级map对象中添加key为children的ArrayList
if ((tmpMap.get(map.get("pid")) != null) && ((Map<String, Object>) tmpMap.get(map.get("pid"))).get("children") == null) {
((Map<String,Object>) tmpMap.get(map.get("pid"))).put("children", new ArrayList<Map<String, Object>>());
}
Map<String, Object> tmap = (Map<String, Object>) tmpMap.get(map.get("pid"));
ArrayList<Map<String, Object>> tArrayList = (ArrayList<Map<String, Object>>) tmap.get("children");
tArrayList.add(list.get(i));
//没有父节点
} else {
resultList.add(list.get(i));
}
}
for (int i = 0, l = list.size(); i < l; i++) {
System.out.println("原始数据是否变化:" + list.get(i));
}
Iterator<Entry<String, Object>> iterator = tmpMap.entrySet().iterator();
while (iterator.hasNext()) {
Entry<String, Object> entry = iterator.next();
System.out.println("遍历之后:" + entry.getKey() + ":" + entry.getValue());
}
return resultList;
}
数据库中的测试数据
解析完成后树状结构如下
---------------------
作者:AugSnow
来源:CSDN
原文:https://blog.csdn.net/yb642518034/article/details/52824729
版权声明:本文为博主原创文章,转载请附上博文链接!
Java树形结构解析相关推荐
- 使用递归算法结合数据库解析成java树形结构
使用递归算法结合数据库解析成java树形结构 1.准备表结构及对应的表数据 a.表结构: create table TB_TREE ( CID NUMBER not null, CNAME VARCH ...
- java 树状数据算法_使用递归算法结合数据库解析成Java树形结构的代码解析
这篇文章主要介绍了使用递归算法结合数据库解析成Java树形结构的代码解析的相关资料,需要的朋友可以参考下 1.准备表结构及对应的表数据 a.表结构:create table TB_TREE ( CID ...
- Java树形结构模糊搜索,模糊匹配
Java树形结构模糊搜索,模糊匹配 相关类结构 核心代码 辅助类--树结构基类 辅助类--测试类 测试代码 发现含有州的市有 43 个 相关类结构 核心代码 package com.demo;impo ...
- java树形结构查询优化
java树形结构查询优化 public class TreeTest {// 定义全局变量,统计地柜中总的循环次数private static int time;/*** 初始化数据,模拟从数据查询出 ...
- Java树形结构的实现
Java树形结构的实现 文章目录 Java树形结构的实现 TreeNode接口 工具类TreeUtil 使用 TreeNode接口 public interface TreeNode<T> ...
- JAVA内存结构解析
原文链接:http://tryenough.com/java-memory-structure 更多:http://tryenough.com/type-android Java内存结构大体示意图: ...
- Java树形结构筛选
Java树形筛选算法 提示:使用递归方法,个人在项目中有使用到,有问题希望指出: 使用场景:当我们得到一个树形结构数据时,可能需要在树形结构上对数据进行筛选,例如通过文件夹(文件)名称模糊查询相关的文 ...
- 一步一步实现一个Java树形结构体方法
废话不多说 ,实现一个树型结构体首先得需要一个对象来装载需要的结构数据: // idprivate Integer id;// 节点名称private String name;// 选中状态priva ...
- Java 树形结构目录树的几种生成方式
使用场景
最新文章
- 打印零与奇偶数(多线程)
- 第四课.KNN电影推荐
- 多行显示的UIButton
- 设计模式——单例模式(懒汉模式,饿汉模式)
- protobuf的安装和使用
- php编写一个投票程序,实例学习PHP之投票程序篇(一)
- 限定某个目录禁止解析php、限制user_agent、php相关配置(php日志)
- python第三十一课--递归(3.递归的弊端)
- 鸿蒙手表升级计划,鸿蒙升级第一夜,服务器崩了!各机型升级排期表来了
- 奇妙生活-神奇的数字-1的故事
- Windows界面编程第十二篇 位图显示特效 飞入效果与伸展效果
- 2008 r2 server sql 中文版补丁_sql server 2008 r2 sp2免费版补丁
- 全链路压测实施思路流程分析
- C语言入门——printf(““)左对齐与右对齐问题
- PHP将商品详情中的尺码表重新进行数据整合并翻译
- h5页面定位偏移的问题--解答
- P01914100尹自杨
- Easy-x的基础教程使用介绍
- caffe生成lmdb数据集的脚本
- C语言函数及复杂数据结构的综合应用——简单户籍管理系统
热门文章
- bootstrap3- 导航条 - 慕课笔记
- ImportError: cannot import name ‘calinski_harabaz_score‘ from ‘sklearn.metrics‘
- PaddleOCR实践之飞桨常规赛:中文场景文字识别
- 计算机中专升大专难不难,自考大专难吗?
- 学习Python 霍兰德人格分析雷达图
- 这是我所收集的一些工具网站
- Jacobi迭代法分量形式matlab,实验一线性方程组迭代法实验.doc
- 行政服务中心大厅3D导航引导系统建设方案
- BLE之广播参数与广播间隔等说明
- vue+elementUI实战之网易云音乐--半月总结!!!