感谢有奉献精神的人

转自: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转换为树形相关推荐

  1. java swing 树_Java Swing JTree 树形

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1.概念 官方JavaDocsApi:javax.swing.JTree JTree 树.将分层数据显示为树状轮廓的组件. 树由若干节点,通过层级关系组成 ...

  2. java arraylist 遍历树_Java递归遍历树形结构

    废话不多说了,直接给大家贴代码,具体代码如下所示://菜单树形结构 public JSONArray treeMenuList(JSONArray menuList, int parentId) { ...

  3. java遍历树_Java实现遍历N级树形目录结构

    最近挺忙,一直在做项目,然后有个树形目录结构需要返回给前端,这里给大家说一下实现的思路. 具体达到的效果类似: 一级目录A: 二级目录A: 三级目录: 四级目录: 文件.txt 二级目录B: 文件1. ...

  4. java表格树_Java程序员值得拥有的TreeMap指南

    吃饭间隙,迷上了<吐槽大会>,一集一集地刷啊,觉得这些嘉宾真的挺有勇气的,敢于直面自己的惨淡槽点.于是,同学们看到了,我作为一个技术博主,也受到了"传染",不,受到了& ...

  5. java 画树_java – 如何绘制代表连接节点图的树?

    我想在Java GUI中显示树,但我不知道如何.树代表连接节点的图形,如下所示: 我应该说我有自己的树类: public class BinaryTree { private BinaryNode r ...

  6. java 画树_java – 如何绘制代表连接节点图的树?

    我想在 Java GUI中显示树,但我不知道如何.树代表连接节点的图形,如下所示: 我应该说我有自己的树类: public class BinaryTree { private BinaryNode ...

  7. java float转换_Java float转换为String

    Java将float转换为String 我们可以使用String.valueOf()和Float.toString()方法在Java中将float转换为String. 情境 如果必须在文本字段中显示浮 ...

  8. java tire树_Java实现Tire

    Trie,又称单词查找树或键树,是一种树形结构.典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它的优点是:最大限度地减少无谓的字符串比较,查询效率比 ...

  9. java 画树_JAVA画树

    展开全部 画什么都行,这62616964757a686964616fe78988e69d8331333262353463个你得自己实现.我可以给你写一个画树的小程序: ---------------- ...

最新文章

  1. 用最骚的话让你彻底弄懂贝叶斯!
  2. 手把手教你STM8单片机标准库移植
  3. R语言使用lm构建线性回归模型、并将目标变量对数化(log10)实战:可视化模型预测输出与实际值对比图、可视化模型的残差、模型预测中系统误差的一个例子 、自定义函数计算R方指标和均方根误差RMSE
  4. 计算机里面照片无法打卡,为什么电脑照片打不开_电脑照片打不开的解决方法...
  5. redis 配置文件 append only file(aof)部分---数据持久化
  6. java 句柄 内存_Java内存区域学习
  7. 介绍自定义JDataGrid电子表格版本公式中的函数?
  8. Localdatetime
  9. Vue 父子组件双向绑定传值
  10. 清华计算机系教学计划,清华大学电子信息科学与技术教学计划
  11. 全栈性能测试修炼宝典jmeter实战电子版_JMeter实战(一) 体系结构
  12. cscope索引软链接解决方法
  13. python深复制_Python深浅拷贝
  14. linux下vasp安装
  15. 前端存储之websql
  16. matlab prn文件,PRN格式文件 如何打开PRN文件 PRN是什么格式的文件 用什么打开 - The X 在线工具...
  17. ECharts - dataset组件的用法详解
  18. discuz 登录代码流程
  19. PHP在线测算带支付运营版,【PHP】最新在线自动发卡平台源码,带多个支付接口及商户平台...
  20. CAD必备插件分享 快速提高工作效率

热门文章

  1. 拿到200万offer的钟钊带领团队将AutoML算法商用
  2. 熵编码之哈夫曼树(五)
  3. 语音处理的分帧,帧移,加窗,滤波,降噪,合成
  4. Android7.0以上增加(/system/lib/libtest.so)系统库文件
  5. android javap命令生成自定义类签名
  6. 改变自己就是改变世界的开始
  7. Win_server_2012如何将“计算机”图标放在桌面
  8. diff命令两个服务器文件,LINUX命令diff-文件管理-比较给定的两个文件的不同
  9. 笔记本电脑开机后在桌面上没有计算机图标,电脑开机之后桌面上没有图标怎么处理...
  10. 每日总结 神州数码DCWS