java list 树_java list转换为树形
感谢有奉献精神的人
转自:http://www.oschina.net/question/129154_235324
构造treelist的过程可以使用递归查询获取,表结构如下
create table TB_TREE
(
id NUMBER not null,
name VARCHAR2(50),
parentId NUMBER //父节点
)
Postgre Sql:
select 语句如下,oracle可以用 start with connect by prior实现类似功能
WITH RECURSIVE r AS (
SELECT
a.id, a.parentid, a.name
FROM TB_TREE a WHERE id= 976
union ALL
SELECT
b.id, b.parentid, b.name
FROM TB_TREE b, r WHERE b.parentid = r.id
)
select
id, parentid, name
from r
import java.util.ArrayList; import java.util.List; public class Tree { private int id; private String name; private int parentId; private List childrens; public Tree(int id,String name,int parentId){ this.id = id; this.name = name; this.parentId = parentId; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getParentId() { return parentId; } public void setParentId(int parentId) { this.parentId = parentId; } public List getChildrens() { return childrens; } public void setChildrens(List childrens) { this.childrens = childrens; } @Override public String toString() { return "Tree [id=" + id + ", name=" + name + ", parentId=" + parentId + ", childrens=" + childrens + "]"; } public static void main(String[] args) { Tree tree1 = new Tree(1, "顶层节点1", 0); Tree tree2 = new Tree(2, "顶层节点2", 0); Tree tree3 = new Tree(3, "顶层节点3", 0); Tree tree4 = new Tree(4, "二级节点4", 1); Tree tree5 = new Tree(5, "二级节点5", 2); Tree tree6 = new Tree(6, "二级节点6", 3); Tree tree7 = new Tree(7, "三级节点7", 4); Tree tree8 = new Tree(8, "三级节点8", 4); Tree tree9 = new Tree(9, "三级节点9", 5); List trees = new ArrayList(); trees.add(tree9); trees.add(tree8); trees.add(tree7); trees.add(tree6); trees.add(tree5); trees.add(tree4); trees.add(tree3); trees.add(tree2); trees.add(tree1); List rootTrees = new ArrayList(); for (Tree tree : trees) { if(tree.getParentId() == 0){ rootTrees.add(tree); } for (Tree t : trees) { if(t.getParentId() == tree.getId()){ if(tree.getChildrens() == null){ List myChildrens = new ArrayList(); myChildrens.add(t); tree.setChildrens(myChildrens); }else{ tree.getChildrens().add(t); } } } } for (Tree tree : rootTrees) { System.out.println(tree.toString()); } } }
java list 树_java list转换为树形相关推荐
- java swing 树_Java Swing JTree 树形
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1.概念 官方JavaDocsApi:javax.swing.JTree JTree 树.将分层数据显示为树状轮廓的组件. 树由若干节点,通过层级关系组成 ...
- java arraylist 遍历树_Java递归遍历树形结构
废话不多说了,直接给大家贴代码,具体代码如下所示://菜单树形结构 public JSONArray treeMenuList(JSONArray menuList, int parentId) { ...
- java遍历树_Java实现遍历N级树形目录结构
最近挺忙,一直在做项目,然后有个树形目录结构需要返回给前端,这里给大家说一下实现的思路. 具体达到的效果类似: 一级目录A: 二级目录A: 三级目录: 四级目录: 文件.txt 二级目录B: 文件1. ...
- java表格树_Java程序员值得拥有的TreeMap指南
吃饭间隙,迷上了<吐槽大会>,一集一集地刷啊,觉得这些嘉宾真的挺有勇气的,敢于直面自己的惨淡槽点.于是,同学们看到了,我作为一个技术博主,也受到了"传染",不,受到了& ...
- java 画树_java – 如何绘制代表连接节点图的树?
我想在Java GUI中显示树,但我不知道如何.树代表连接节点的图形,如下所示: 我应该说我有自己的树类: public class BinaryTree { private BinaryNode r ...
- java 画树_java – 如何绘制代表连接节点图的树?
我想在 Java GUI中显示树,但我不知道如何.树代表连接节点的图形,如下所示: 我应该说我有自己的树类: public class BinaryTree { private BinaryNode ...
- java float转换_Java float转换为String
Java将float转换为String 我们可以使用String.valueOf()和Float.toString()方法在Java中将float转换为String. 情境 如果必须在文本字段中显示浮 ...
- java tire树_Java实现Tire
Trie,又称单词查找树或键树,是一种树形结构.典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它的优点是:最大限度地减少无谓的字符串比较,查询效率比 ...
- java 画树_JAVA画树
展开全部 画什么都行,这62616964757a686964616fe78988e69d8331333262353463个你得自己实现.我可以给你写一个画树的小程序: ---------------- ...
最新文章
- 用最骚的话让你彻底弄懂贝叶斯!
- 手把手教你STM8单片机标准库移植
- R语言使用lm构建线性回归模型、并将目标变量对数化(log10)实战:可视化模型预测输出与实际值对比图、可视化模型的残差、模型预测中系统误差的一个例子 、自定义函数计算R方指标和均方根误差RMSE
- 计算机里面照片无法打卡,为什么电脑照片打不开_电脑照片打不开的解决方法...
- redis 配置文件 append only file(aof)部分---数据持久化
- java 句柄 内存_Java内存区域学习
- 介绍自定义JDataGrid电子表格版本公式中的函数?
- Localdatetime
- Vue 父子组件双向绑定传值
- 清华计算机系教学计划,清华大学电子信息科学与技术教学计划
- 全栈性能测试修炼宝典jmeter实战电子版_JMeter实战(一) 体系结构
- cscope索引软链接解决方法
- python深复制_Python深浅拷贝
- linux下vasp安装
- 前端存储之websql
- matlab prn文件,PRN格式文件 如何打开PRN文件 PRN是什么格式的文件 用什么打开 - The X 在线工具...
- ECharts - dataset组件的用法详解
- discuz 登录代码流程
- PHP在线测算带支付运营版,【PHP】最新在线自动发卡平台源码,带多个支付接口及商户平台...
- CAD必备插件分享 快速提高工作效率
热门文章
- 拿到200万offer的钟钊带领团队将AutoML算法商用
- 熵编码之哈夫曼树(五)
- 语音处理的分帧,帧移,加窗,滤波,降噪,合成
- Android7.0以上增加(/system/lib/libtest.so)系统库文件
- android javap命令生成自定义类签名
- 改变自己就是改变世界的开始
- Win_server_2012如何将“计算机”图标放在桌面
- diff命令两个服务器文件,LINUX命令diff-文件管理-比较给定的两个文件的不同
- 笔记本电脑开机后在桌面上没有计算机图标,电脑开机之后桌面上没有图标怎么处理...
- 每日总结 神州数码DCWS