国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java遞歸遍歷樹形結構

2019-11-26 14:30:54
字體:
來源:轉載
供稿:網(wǎng)友

廢話不多說了,直接給大家貼代碼,具體代碼如下所示:

//菜單樹形結構 public JSONArray treeMenuList(JSONArray menuList, int parentId) { JSONArray childMenu = new JSONArray(); for (Object object : menuList) { JSONObject jsonMenu = JSONObject.fromObject(object); int menuId = jsonMenu.getInt("id"); int pid = jsonMenu.getInt("parentId"); if (parentId == pid) { JSONArray c_node = treeMenuList(menuList, menuId); jsonMenu.put("childNode", c_node); childMenu.add(jsonMenu); } } return childMenu; } public static void main(String args[]) { MenuCacheService menuCacheService = new MenuCacheService(); JSONArray jsonArray = new JSONArray(); Menu menu1 = new Menu(); menu1.setId(1l); menu1.setParentId(0); menu1.setLevel(0); Menu menu2 = new Menu(); menu2.setId(2l); menu2.setParentId(0); menu2.setLevel(0); Menu menu3 = new Menu(); menu3.setId(3l); menu3.setParentId(2); menu3.setLevel(1); Menu menu4 = new Menu(); menu4.setId(4l); menu4.setParentId(2); menu4.setLevel(1); Menu menu5 = new Menu(); menu5.setId(5l); menu5.setParentId(4); menu5.setLevel(2); Menu menu6 = new Menu(); menu6.setId(6l); menu6.setParentId(1); menu6.setLevel(1); jsonArray.add(menu1); jsonArray.add(menu2); jsonArray.add(menu3); jsonArray.add(menu4); jsonArray.add(menu5); jsonArray.add(menu6); System.out.print(menuCacheService.treeMenuList(jsonArray,0)); }

ps:java實現(xiàn)樹的遞歸遍歷(用于實現(xiàn)折疊菜單)

1.核心算法

package com.zf.tag.dao;import java.util.ArrayList;import java.util.List;import com.zf.tag.entity.dept.Dept;public class DeptDao extends BaseDao{public static List<Dept> searchAllDept() throws Exception{List<Object[]> listAllObject=new ArrayList<Object[]>();List<Object[]> tmp=new ArrayList<Object[]>();List<Dept> listAllDept=new ArrayList<Dept>();String sql="select id,dname,up_did from tbl_dept";listAllObject=getResult(sql);for (Object[] row : listAllObject) {Object[] ro = new Object[3];ro[0] = row[0];ro[1] = row[1];ro[2] = row[2];tmp.add(row);}for (Object[] row : tmp) {if (null == row[2]) {Dept d = new Dept();d.setId(Integer.parseInt(String.valueOf(row[0])));d.setDname(String.valueOf(row[1]));listAllDept.add(d);fomateDept(tmp, d);}}return listAllDept;}private static void fomateDept(List<Object[]> tmp, Dept dept) {for (Object[] row : tmp) {if ((null != row[2])&& Integer.parseInt(String.valueOf(row[2])) == dept.getId()) {Dept d = new Dept();d.setId(Integer.parseInt(String.valueOf(row[0])));d.setDname(String.valueOf(row[1]));List<Dept> list = dept.getChildren();if (list == null) {list = new ArrayList<Dept>();}list.add(d);dept.setChildren(list);fomateDept(tmp, d);}}}}

2.實體類(部門)

package com.zf.tag.entity.dept;import java.util.List;public class Dept {private Integer id;private String dname;private List<Dept> children;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getDname() {return dname;}public void setDname(String dname) {this.dname = dname;}public List<Dept> getChildren() {return children;}public void setChildren(List<Dept> children) {this.children = children;}public String toString(){return this.getDname();}}

以上所述是小編給大家介紹的Java遞歸遍歷樹形結構的相關內容,希望對大家有所幫助!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 沁源县| 温宿县| 汝城县| 汉源县| 怀仁县| 通榆县| 车致| 济阳县| 丹寨县| 中方县| 德江县| 中方县| 河东区| 台中县| 县级市| 贵州省| 祁东县| 将乐县| 山丹县| 扎兰屯市| 泸溪县| 灵台县| 平利县| 绥江县| 关岭| 辛集市| 景宁| 庆云县| 吉安市| 高安市| 通辽市| 临清市| 丰台区| 平武县| 九寨沟县| 临安市| 射阳县| 龙泉市| 北海市| 高陵县| 色达县|