日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

父子树状结构图

發布時間:2023/12/29 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 父子树状结构图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

遍歷獲取父子樹狀結構的MAP集合。
用Map集合通用性比較高。

private List<Map<String, Object>> treeMenuList(List<Map<String, Object>> childMenu, List<Map<String, Object>> allMenu, String pid) {for (Map<String, Object> map : allMenu) {String supdepid = map.get("parentId") == null ? null : map.get("parentId").toString();String departmentId = map.get("id") == null ? null : map.get("id").toString();if (pid.equals(supdepid)) {List<Map<String, Object>> childrenList = treeMenuList(new ArrayList<>(), allMenu, departmentId);map.put("childrenDepartment", childrenList);childMenu.add(map);}}return childMenu;}

當父子樹狀圖需要對一個對象集合來操作的時候

/*** 根據工號,和系統的id(mark) 來獲取菜單的框架,分級那種。* @param menuQueryBo* @return*//*** 利用遞歸循環查詢* 每一層查詢其員工封裝到一個對象map集合中* 員工是根據部門的id來查詢的,一對多* 和查詢部門封裝到一個對象map集合中* 當根據父id查詢不到部門的時候循環結束。*///全局變量private List<MenuVO> allDepartment = new ArrayList<>(); //全局變量@Overridepublic Response<List<MenuVO>> getMenuByworkCodeAndSystemIdForFrame(MenuQueryBo menuQueryBo) {//先獲取所有的數據 該數據取 沒有做父子類的數據,List<MenuBO> data = this.getMenuByworkCodeAndSystemId(menuQueryBo).getData();if (data == null || data.size() == 0) {Response response = new Response();response.setCode(0);response.setMessage("沒有關聯的菜單");return response;}/*** 找到符合條件的角色的所有父類直到parentId為0;*/List<MenuVO> datumList = new ArrayList<>();//把獲取的值給全值集合for (MenuBO datum : data) {//getMenuVOParent(datum);allDepartment.add(MenuBOTransformVO.boToVO(datum));}List<MenuVO> menuVOList = new ArrayList<>();/* for (MenuVO datum : allDepartment) {//得到所有符合條件的menuVO集合// allDepartment.add(MenuBOTransformVO.boToVO(datum));if (datum.getParentId() == 0) {menuVOList.add(datum);}}*/for (int i = 0; i < allDepartment.size(); i++) {if (allDepartment.get(i).getParentId() == 0) {menuVOList.add(allDepartment.get(i));}}if (!menuVOList.isEmpty()) {List<MenuVO> list = new ArrayList<>();if (menuVOList != null) {for (int i = 0; i < menuVOList.size(); i++) {list.add(recursiveTree(menuVOList.get(i).getId())); //獲取一級節點的對象id}}allDepartment.clear();return Response.success(list);} else {//此時父id不是0;for (MenuVO menuVO : allDepartment) {List<MenuVO> menuVOList1 = new ArrayList<>();for (MenuVO menuVO1 : allDepartment) {if (menuVO.getParentId() == menuVO1.getId()) {menuVOList1.add(menuVO);}}if (menuVOList1.isEmpty()) {menuVOList.add(menuVO);}}List<MenuVO> list = new ArrayList<>();if (menuVOList != null) {for (int i = 0; i < menuVOList.size(); i++) {list.add(recursiveTree(menuVOList.get(i).getId())); //獲取一級節點的對象id}}allDepartment.clear();return Response.success(list);}}/*** 遞歸算法解析成樹形結構** @param cid*/public MenuVO recursiveTree(Integer cid) {MenuVO node = new MenuVO();for (MenuVO menuVO : allDepartment) {if (menuVO.getId() == cid) {BeanUtils.copyProperties(menuVO, node);}}List<MenuVO> childTreeNodes = getChildTreeById(cid);for (MenuVO child : childTreeNodes) {MenuVO n = recursiveTree(child.getId());node.getChildren().add(n);}return node;}/*** 根據CID查詢節點對象*/public HrmDepartmentVO HrmDepartmentPO(Integer cid) {Map map = getTreeMap();return (HrmDepartmentVO) map.get(cid);}/*** 一次性取所有數據,為了減少對數據庫查詢操作** @return*/public Map getTreeMap() {Map map = new HashMap<Integer, HrmDepartmentPO>();if (null != allDepartment) {for (MenuVO d : allDepartment) {map.put(d.getId(), d);}}return map;}/*** 根據父節點CID獲取所有了節點*/public List<MenuVO> getChildTreeById(Integer cid) {List<MenuVO> list = new ArrayList<>();if (null != allDepartment) {for (MenuVO d : allDepartment) {if (null != cid) {if (cid.equals(d.getParentId())) {list.add(d);}}}}return list;}

總結

以上是生活随笔為你收集整理的父子树状结构图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。