日期:2014-05-18  浏览次数:20729 次

求一个最简单的树
问题是这样的:
有数据库如下
id     name1     name2     name3
  1           a         a1           a11
  2           a         a1           a12  
  3           a         a2           a21    
  4           b         b1           b11    
  5           b         b2           b21    
  6           c         c1           c11
数据是动态的(不一定就是a啊b啊的)。
现在要从数据库读取信息,以树的形式保存,然后得出name1有多少种,各种name1中又有几种name2,又各有多少种name3。



------解决方案--------------------
表述不清楚,如果要在頁面顯示
去下個dtree,只要三層節點就夠了。
------解决方案--------------------
up
------解决方案--------------------
这种表结构做树是不是麻烦了点 最好弄个parentId用DTREE很方便的
------解决方案--------------------
public static void print(HashMap root)
{
for (Iterator iterator = root.keySet().iterator(); iterator.hasNext();)
{
String ss = (String) iterator.next();
HashMap temp = (HashMap) root.get(ss);
System.out.println(ss + "= " + temp.size());
print(temp);
}
}


public static void main(String[] args)
{
String[][] s = { { "1 ", "a ", "a1 ", "a11 " }, { "2 ", "a ", "a1 ", "a12 " },
{ "3 ", "a ", "a2 ", "a21 " }, { "4 ", "b ", "b1 ", "b11 " },
{ "5 ", "b ", "b2 ", "b21 " }, { "6 ", "c ", "c1 ", "c11 " } };

HashMap root = new HashMap();
HashMap temp = null;
//name1
for (int i = 0; i < s.length; i++)
{
if (root.containsKey(s[i][1]))
{
continue;
}
else
{
root.put(s[i][1], new HashMap());
}
}
//name2
for (int i = 0; i < s.length; i++)
{
temp = (HashMap) root.get(s[i][1]);
if (temp.containsKey(s[i][2]))
{
continue;
}
else
{
temp.put(s[i][2], new HashMap());
}
}
//name3
for (int i = 0; i < s.length; i++)
{
temp = (HashMap) root.get(s[i][1]);
temp = (HashMap) temp.get(s[i][2]);
if (temp.containsKey(s[i][3]))
{
continue;
}
else
{
temp.put(s[i][3], new HashMap());
}
}
print(root);


}
看这个能不能满足你要求
------解决方案--------------------