我喜歡解決算法問題 哈哈
為了解決這個問題 我寫了一個樹狀數據結構
根節點為世界(我想這個根夠大了吧)
下面有兩個子節點 分別為亞洲 歐洲
亞洲的下面還有幾個節點分別是中國 韓國......
中國下面的幾個節點分別是 福建省 湖北省......
以次類推
就是一個樹啦 (不知道這個樹是不是樓主需要的 反正沒事寫著玩唄 起碼能對樓主有所啟發吧)
下面是代碼
首先是 Type (一個對象是一條記錄)
package?beans;


public?class?Type?
{
????????private?int?id;

????????private?String?name;

????????private?int?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;
????????}

}

然后是 TypeTree 繼承與Type 比Type 多一個ArrayList屬性是 childtype 里面的每一個元素應該是 其子節點TypeTree
(arrayList 里面可能有多個元素,每個元素都是個TypeTree??也可能沒有)
package?beans;

import?java.util.ArrayList;


public?class?TypeTree?extends?Type?
{

????????private?ArrayList?childtype;


????????public?ArrayList?getChildtype()?
{
????????????????return?childtype;
????????}


????????public?void?setChildtype(ArrayList?childtype)?
{
????????????????this.childtype?=?childtype;
????????}
}

然后是最重要的 生成TypeTree 的類??這個類可以把 Type[] 轉換成一個 TypeTree 對象
這個TypeTree 對象是模擬樹狀結構的??每一個節點都是一個Type
樹的結構也都是按照 數據庫表中??id??與parentid 結構的
package?beans;

import?java.util.ArrayList;


public?class?Tree?
{
????????private?Type[]?type;

????????private?TypeTree?typeTree;


????????public?ArrayList?getTree(int?parentid)?
{
????????????????ArrayList?arrayList?=?new?ArrayList();

????????????????for?(int?i?=?0;?i?<?type.length;?i++)?
{

????????????????????????if?(type[i].getParentid()?==?parentid)?
{
????????????????????????????????TypeTree?t?=?new?TypeTree();
????????????????????????????????t.setId(type[i].getId());
????????????????????????????????t.setName(type[i].getName());
????????????????????????????????t.setParentid(type[i].getParentid());
????????????????????????????????t.setChildtype(getTree(type[i].getId()));
????????????????????????????????arrayList.add(t);
????????????????????????????????System.out.println("Tree"?+?t.getId()?+?"?"?+?t.getName()?+?"?"
????????????????????????????????????????????????+?t.getParentid());
????????????????????????}
????????????????}
????????????????return?arrayList;
????????}


????????public?TypeTree?createTree()?
{
????????????????this.typeTree?=?new?TypeTree();
????????????????this.typeTree.setId(0);
????????????????this.typeTree.setName("world");
????????????????this.typeTree.setParentid(-1);
????????????????this.typeTree.setChildtype(this.getTree(0));
????????????????return?this.typeTree;
????????}


????????public?Type[]?getType()?
{
????????????????return?type;
????????}


????????public?void?setType(Type[]?type)?
{
????????????????this.type?=?type;
????????}
}

最后是我測試用的 類 連接數據庫寫的很簡單 別見笑啊
這個類可以直接運行 只要你建立了數據源 呵呵
其中 把樹中所有元素顯示出來 也是用了一個遞歸的方法( public static void display(TypeTree typeTree) )
這個遞歸的方法在你的JSP顯示的時候可能有用
package?beans;

import?java.sql.*;
import?java.util.ArrayList;


public?class?TreeTest?
{
????????Connection?con?=?null;

????????Statement?sta?=?null;

????????ResultSet?res?=?null;

????????String?sql?=?"select?*?from?treetable";


????????public?Type[]?qiaolian()?
{
????????????????ArrayList?arrayList?=?new?ArrayList();

????????????????try?
{
????????????????????????Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

????????????????}?catch?(ClassNotFoundException?e)?
{
????????????????????????System.out.println(e);
????????????????}

????????????????try?
{
????????????????????????con?=?DriverManager.getConnection("jdbc:odbc:hib",?"sa",?"");

????????????????}?catch?(SQLException?e)?
{
????????????????????????System.out.println(e);
????????????????}

????????????????try?
{
????????????????????????sta?=?con.createStatement();
????????????????????????res?=?sta.executeQuery(sql);

????????????????????????while?(res.next())?
{
????????????????????????????????Type?t?=?new?Type();
????????????????????????????????t.setId(res.getInt("id"));
????????????????????????????????t.setName(res.getString("name"));
????????????????????????????????t.setParentid(res.getInt("parentid"));
????????????????????????????????arrayList.add(t);
????????????????????????}

????????????????}?catch?(SQLException?e)?
{
????????????????????????System.out.println(e);
????????????????}
????????????????Type[]?type?=?new?Type[arrayList.size()];

????????????????for?(int?i?=?0;?i?<?arrayList.size();?i++)?
{
????????????????????????type[i]?=?(Type)?arrayList.get(i);
????????????????}
????????????????return?type;
????????}


????????public?static?void?main(String[]?args)?
{
????????????????TreeTest?treeTest?=?new?TreeTest();
????????????????Type[]?ty?=?treeTest.qiaolian();
????????????????Tree?tree?=?new?Tree();
????????????????tree.setType(ty);
????????????????TypeTree?typeTree?=?tree.createTree();
????????????????display(typeTree);
????????}


????????public?static?void?display(TypeTree?typeTree)?
{
????????????????TypeTree?now?=?typeTree;
????????????????System.out.println(now.getId()?+?"\t"?+?now.getName()?+?"\t"
????????????????????????????????+?now.getParentid()?+?"\t"?+?"child?num"
????????????????????????????????+?now.getChildtype().size());

????????????????if?(now.getChildtype()?!=?null)?
{
????????????????????????ArrayList?arrayList?=?now.getChildtype();

????????????????????????for?(int?i?=?0;?i?<?arrayList.size();?i++)?
{
????????????????????????????????display((TypeTree)?arrayList.get(i));
????????????????????????}
????????????????}
????????}
}
為了解決這個問題 我寫了一個樹狀數據結構
根節點為世界(我想這個根夠大了吧)
下面有兩個子節點 分別為亞洲 歐洲
亞洲的下面還有幾個節點分別是中國 韓國......
中國下面的幾個節點分別是 福建省 湖北省......
以次類推
就是一個樹啦 (不知道這個樹是不是樓主需要的 反正沒事寫著玩唄 起碼能對樓主有所啟發吧)
下面是代碼
首先是 Type (一個對象是一條記錄)

















































然后是 TypeTree 繼承與Type 比Type 多一個ArrayList屬性是 childtype 里面的每一個元素應該是 其子節點TypeTree
(arrayList 里面可能有多個元素,每個元素都是個TypeTree??也可能沒有)























然后是最重要的 生成TypeTree 的類??這個類可以把 Type[] 轉換成一個 TypeTree 對象
這個TypeTree 對象是模擬樹狀結構的??每一個節點都是一個Type
樹的結構也都是按照 數據庫表中??id??與parentid 結構的


























































最后是我測試用的 類 連接數據庫寫的很簡單 別見笑啊
這個類可以直接運行 只要你建立了數據源 呵呵
其中 把樹中所有元素顯示出來 也是用了一個遞歸的方法( public static void display(TypeTree typeTree) )
這個遞歸的方法在你的JSP顯示的時候可能有用
































































































