JAVA遞迴生成tree樹

2021-07-02 23:52:43 字數 1765 閱讀 6767

關於類別樹的多級是乙個剛接觸ajax和多級類別很頭痛的問題,針對那種商品種類繁多,級別層次多更是麻煩的問題,去年剛學asp.net,實驗室的同學曾經這樣做過,遞迴sql,現在看了驚心動魄

雖然實現了類別多級的問題這樣帶來的後果確實無窮無盡的.............

遞迴查詢,和雙迴圈巢狀的執行sql語句沒什麼區別了......

這樣帶來的是嚴重的效能問題..

現在重新做這些東西,我想到了2個方案,第乙個:

針對資料比較少的多級選單,我們可以通過資料庫一次查詢出來所有記錄,然後通過程式進行遞迴演算法,進行資料的轉化.

第二種:

就是資料庫設計的時候,設計成多級別的選單,每次載入通過ajax,一點一點展開(每一次展開都ajax請求下一級的資料),這樣避免的遞迴帶來的效能損失,而且實現簡單方便,非常適合大資料量的時候,但是,一次只能顯示一級,每次都要ajax請求下一級.

由於後台管理,第一次就按照第一種方案來設計:

首先,要設計好資料庫,方便以後兩種方式擴充套件,

這樣設計,主要是考慮方便前台後台的擴充套件,fid欄位是乙個為了方便前台查詢而設計的,這樣設計的好處就是如果查詢比如頂級選單下的所有產品,只需要根據模糊查詢字首匹配,就能把所有的產品都查詢出來,設計的字段還是有點小,isleaf是為了判斷是否是葉子節點,belongsid父級id,

前台**:

**如下:

這乙個難點在於json資料遞迴生成:

bll中獲得tree的json資料

複製**

**如下:

///

/// 工藝品類別樹轉化為json格式

///

///

public string crafttypetreetojson()

,內容

} }

sb.remove(sb.length - 1, 1); //去除掉最後乙個多餘的,

return common.formattojson.miniuitojsonfortree(sb.tostring(), "工藝品類別");

} ///

/// 遞迴獲得父級id下的所有類別json資料

///

/// json字串

/// 父級id

/// 類別資訊集合

public void getleaftree(ref stringbuilder sb,int parentid,ienumerablecrafttypelist)

,內容

} }

sb.remove(sb.length - 1, 1); //去除掉最後乙個多餘的,

} 效果圖如下:

雖然是ajax實現,不過這個確實ajax一次性把資料全部載入進去,這樣對效能有嚴重的損失,不過考慮是後台,所以,沒做處理,不過最好還是用第二種方法設計,那種方法是最好的解決方法,也適合前台的資料展示.

第二種方法正在實踐中………

Java遞迴生成樹

注意 根節點的pid 0,其他節點的pid跟id是有對應的父子關係的。這裡只展示遞迴生成樹的 查詢資料庫的操作非常簡單,只用到了一句sql,然後將結果封裝成list。select id,pid,name from t menu service override public list tree 遞迴...

JAVA遞迴生成許可權樹

遞迴生成乙個許可權樹,可通過以下過程實現 每條許可權有自己的id 父節點parentid 許可權名稱name 許可權還擁有次級許可權children。許可權表 create table module id int 10 not null auto increment comment 模組id par...

次小生成樹Tree

小c最近學了很多最小生成樹的演算法,prim演算法 kurskal演算法 消圈演算法等等。正當小c洋洋得意之時,小p又來潑小c冷水了。小p說,讓小c求出乙個無向圖的次小生成樹,而且這個次小生成樹還得是嚴格次小的,也就是說 如果最小生成樹選擇的邊集是em,嚴格次小生成樹選擇的邊集是es,那麼需要滿足 ...