还是目录树的问题!~表结构如下:
id publishsort sortname
1 Q 生物科学
2 Q1 普通生物学
3 Q12 生物光学
4 R 医学卫生
5 R-01 草药学
6 R-012 中草药
表结构不能改!~Q的子集是Q1,然后Q1的子集是Q12。。如此来创建目录树。现在己把数据取出放在list里面!如何用java来做数据处理!生成目录树!大侠们帮帮忙哈!
id publishsort sortname
1 Q 生物科学
2 Q1 普通生物学
3 Q12 生物光学
4 R 医学卫生
5 R-01 草药学
6 R-012 中草药
表结构不能改!~Q的子集是Q1,然后Q1的子集是Q12。。如此来创建目录树。现在己把数据取出放在list里面!如何用java来做数据处理!生成目录树!大侠们帮帮忙哈!
1用int就可以了,用来标识在list中的位置
2用String,第一个字符标识其根目录,第二个标识次根目录...
3用String
每次从list中去元素时,去扫描目录String,然后判断应该放到那个层次中
如:扫描到Q字符就将Q对象入栈,然后再扫描第二个,入栈...
到最后一个字符时,让栈中对象逐个出栈,逐级添加
// 假设数据已排序
datas.add(new Depart(1, "Q", "生物科学"));
datas.add(new Depart(2, "Q1", "普通生物学"));
datas.add(new Depart(3, "Q12", "生物光学"));
datas.add(new Depart(33, "Q13", "计划生育"));
datas.add(new Depart(4, "R", "医学卫生"));
datas.add(new Depart(5, "R-01", "草药学"));
datas.add(new Depart(6, "R-012", "中草药")); int len = datas.size();
String up = ""; // parent
String last = ""; // brother
int tier = -1; // 层数 for (int i=0; i<len; i++) {
Depart current = (Depart)datas.get(i);
if (current.pub.indexOf(last)>=0) {
// 新一层
up = last;
last = current.pub;
tier++;
} else {
if (current.pub.indexOf(up)>=0) {
// 同一层
last = current.pub;
} else {
//新根结点
up = "";
last = current.pub;
tier = 0;
}
}
print__(tier);
System.out.println(current.name);
}
}
catch(Exception ex)
{
ex.printStackTrace();
} } static void print__(int tier) {
if (tier <= 0) {
return;
}
System.out.print("|");
for (int i=0; i<tier; i++) {
System.out.print("--");
}
}
}class Depart {
int id = 0;
String pub = "";
String name = "";
Depart(int id, String pub, String name) {
this.id = id;
this.pub = pub;
this.name = name;
}
}