java 递归读取数据库生成tree的结构

水中影子 2009-10-15 09:02:57
使用java递归或非递归读取数据库表生成类似tree结构的代码。谢谢了
表结构如下
id name parentId
-------------------
01 ok
02 ok 01
03 ok 01
04 ok 02
.........
最好讲讲原理谢谢了
...全文
1157 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dyflovexlp 2009-10-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bitan 的回复:]
如果想得到Tree结构,而且还是读的数据库的表,直接考虑SQL的写法,使结果符合要求不更简单么
start with parentId is null
connect by prior id = parnetId
[/Quote]

bitan 2009-10-15
  • 打赏
  • 举报
回复
如果想得到Tree结构,而且还是读的数据库的表,直接考虑SQL的写法,使结果符合要求不更简单么
start with parentId is null
connect by prior id = parnetId
水中影子 2009-10-15
  • 打赏
  • 举报
回复
三四个层次,谁知道如何递归啊,递归不太懂
水中影子 2009-10-15
  • 打赏
  • 举报
回复
谁有源码给一份,看看
portnet 2009-10-15
  • 打赏
  • 举报
回复
class Item{
private List<Item> children;
private Item parent;

public List<Item> getChildren(){
}
public void addChild(Item item){
children.add(item);
}
public void getParent(){
return parent;
}
}
最简单就是按你的层次读取数据库记录。父节点在前,子节点在后,按顺序添加构造一个树。

for (Item item:ResultSet) {
//递归获取树节点比较,并添加到树上去。
}
lzh_me 2009-10-15
  • 打赏
  • 举报
回复
关注...
弘石 2009-10-15
  • 打赏
  • 举报
回复
我曾经用map做过一个树的保存,但是可以知道每个节点所在的级次
你这个不能直接获取级次,可以采用2楼的结构,在从数据库中加载时需要把所有节点放到map中,每处理一个节点时根据其父节点名称从map中找到其父节点,这样就可以生成整个树
另外在处理过程中,找到根节点保存到一个变量中就可以了
gukuitian 2009-10-15
  • 打赏
  • 举报
回复

没细调格式,对付看吧,

import java.util.*;

public class ReadConsole1 {
public static void main(String[] args)
{
Tree t1=new Tree("01","name1","");
Tree t2=new Tree("02","name2","01");
Tree t3=new Tree("03","name3","01");
Tree t4=new Tree("04","name4","02");
Tree t5=new Tree("05","name5","02");

List<Tree> list=new ArrayList<Tree>();
list.add(t1);
list.add(t2);
list.add(t3);
list.add(t4);
list.add(t5);
showTree(list,t1,0);
}
//判断字母还是数字
public static void showTree(List<Tree> list,Tree tree,int deep)
{
String str="";
for(int i=0;i<deep;i++)
{
str+=" ";
}
System.out.println(str+""+tree.getName());
for(int i=0;i<list.size();i++)
{
if(list.get(i).getPid().equals(tree.getId()))
{
deep++;
showTree(list,list.get(i),deep);
deep--;
}

}
}
}

class Tree
{
private String id;
private String name;
private String pid;
public Tree(String id,String name,String pid)
{
this.id=id;
this.name=name;
this.pid=pid;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public String getPid() {
return pid;
}

}

50,736

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧