日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java Tree結構數據中查找匹配節點方式

瀏覽:28日期:2022-08-25 09:47:15

我就廢話不多說了,大家還是直接看代碼吧~

private boolean contains(List<TreeVo> children, String value) { for (TreeVo child : children) { if (child.getName().equals(value) || (child.getChildren().size() > 0 && contains(child.getChildren(), value))) { return true; } } return false; }

補充知識:java樹形結構根據父級節點獲取其下面的所有最底層的根節點數據

因工作中需要根據任意父級節點查找到樹形節點下的根節點信息,所以寫了下面一個demo方便自己需要時的查看以及需要的人參考

一共兩個類

TreeNode 使用了lombok插件

TreeNodeTest

主要的邏輯都在TreeNodeTest中 如果有錯誤的地方,還望留言評論,感謝

TreeNode

@Data@AllArgsConstructorpublic class TreeNode { /** * 節點ID **/ private String id; /** * 父級ID **/ private String parentId; /** * 節點名稱 **/ private String name;}

TreeNodeTest

/** * 測試類 * 此方法建議數據量少的情況使用 或者 此數據很少變動并且加入到緩存中*/public class TreeNodeTest { public static void main(String[] args) { /** *0 * / * 123 130 * / / * 124 125 131 132 * / / / / * 126 127 128 129 133 134 135 136 * 只支持 節點路徑長度必須一致的情況下才可以 * 此Demo可以實現 根據0 獲取到[126 127 128 129 133 134 135 136] * 根據123 獲取到[126 127 128 129] * 注:比如 126 127節點沒有 此時獲取到的0根節點 就會出現 [124 128 129 133 134 135 136] */ TreeNode treeNode = new TreeNode('123','0','北京'); TreeNode treeNode1 = new TreeNode('124','123','豐臺區'); TreeNode treeNode2 = new TreeNode('125','123','海淀區'); TreeNode treeNode3 = new TreeNode('126','124','豐臺區豐臺科技園'); TreeNode treeNode4 = new TreeNode('127','124','豐臺區豐臺南路'); TreeNode treeNode5 = new TreeNode('128','125','海淀區中關村'); TreeNode treeNode6 = new TreeNode('129','125','海淀區海淀公園'); TreeNode treeNode7 = new TreeNode('130','0','上海'); TreeNode treeNode8 = new TreeNode('131','130','徐匯區'); TreeNode treeNode9 = new TreeNode('132','130','虹口區'); TreeNode treeNode10 = new TreeNode('133','131','徐匯區龍華寺'); TreeNode treeNode11 = new TreeNode('134','131','徐匯區天主教堂'); TreeNode treeNode12 = new TreeNode('135','132','虹口區虹口足球場'); TreeNode treeNode13 = new TreeNode('136','132','虹口區魯迅公園'); List<TreeNode> treeNodes = new LinkedList<>(); treeNodes.add(treeNode); treeNodes.add(treeNode1); treeNodes.add(treeNode2); treeNodes.add(treeNode3); treeNodes.add(treeNode4); treeNodes.add(treeNode5); treeNodes.add(treeNode6); treeNodes.add(treeNode7); treeNodes.add(treeNode8); treeNodes.add(treeNode9); treeNodes.add(treeNode10); treeNodes.add(treeNode11); treeNodes.add(treeNode12); treeNodes.add(treeNode13); // 按照父級ID分組 Map<String,List<TreeNode>> groupByParentIdMap = treeNodes.stream() .collect(Collectors.groupingBy(TreeNode::getParentId)); // 存放 0:對應的所有根節點ID數據 Set<String> topToLowerChildIdSet = new HashSet<>(); // 取出頂級數據(也就是父級ID為0的數據 當然頂層的父級ID也可以自定義 這里只是演示 所以給了0) List<TreeNode> topTreeNodes = groupByParentIdMap.get('0'); for(TreeNode node : topTreeNodes){ getMinimumChildIdArray(groupByParentIdMap,node.getId(),topToLowerChildIdSet); } System.out.println('0節點下所有的根節點數據集合:' + topToLowerChildIdSet.toString()); } /** * 根據父級節點獲取最低層次 那一級的節點數據 * 1 * / * 2 3 * / / * 4 5 6 7 * 上面的樹形結構調用此方法 根據1 可以獲取到 [4 5 6 7] * 根據3 可以獲得到 [6 7] * @param groupByParentIdMap 所有的元素集合(根據父級ID進行了分組) 分組方法可以使用lambda 如下: * Map<String, List<Person>> peopleByCity = personStream.collect(Collectors.groupingBy(Person::getCity)); * @param pid 父級ID * @param topToLowerChildIdSet 存儲最深根節點的數據集合 */ public static Set<String> getMinimumChildIdArray(Map<String,List<TreeNode>> groupByParentIdMap, String pid, Set<String> topToLowerChildIdSet){ // 存放當前pid對應的所有根節點ID數據 Set<String> currentPidLowerChildIdSet = new HashSet<>(); // 獲取當前pid下所有的子節點 List<TreeNode> childTreeNodes = groupByParentIdMap.get(pid); if(CollUtil.isEmpty(childTreeNodes)){ return null; } for(TreeNode treeNode : childTreeNodes){ Set<String> lowerChildIdSet = getMinimumChildIdArray(groupByParentIdMap,treeNode.getId(),currentPidLowerChildIdSet); if(CollUtil.isEmpty(lowerChildIdSet)){ // 如果返回null 表示當前遍歷的treeNode節點為最底層的節點 currentPidLowerChildIdSet.add(treeNode.getId()); } } System.out.println('當前父級ID:'+ pid + '下所有的根節點數據:' + currentPidLowerChildIdSet.toString()); // 把當前獲取到的根節點數據 一并保存到上一個節點父級ID集合中 topToLowerChildIdSet.addAll(currentPidLowerChildIdSet); return currentPidLowerChildIdSet; }}

運行后的結果:

Java Tree結構數據中查找匹配節點方式

以上這篇Java Tree結構數據中查找匹配節點方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美精品影院| 免费日韩一区二区| 亚洲精品99| 国产欧美久久一区二区三区| 成人在线网站| 日本午夜精品| 国产一区二区中文| 国产精品美女在线观看直播| 五月天综合网站| 麻豆精品国产91久久久久久| 免费日韩视频| 欧洲精品一区二区三区| 69堂精品视频在线播放| 色88888久久久久久影院| 国产日韩免费| 日韩一区欧美二区| 九色porny丨国产首页在线| 日韩国产一二三区| 亚洲欧美日韩高清在线| 成人在线超碰| 国产日韩一区二区三区在线播放 | 中文字幕av一区二区三区人 | 国产手机视频一区二区 | 国产精品一区二区三区四区在线观看 | 久久最新视频| 欧美日韩精品免费观看视欧美高清免费大片 | 亚洲精品成人一区| 九色精品91| 日韩一区亚洲二区| 国产欧美二区| 日韩中文av| 99成人在线| 国产精品字幕| 精品久久久久中文字幕小说| 青青草国产精品亚洲专区无| 久久av一区| 欧美91福利在线观看| 日本不卡免费高清视频在线| 久久99久久人婷婷精品综合| 日韩精品亚洲专区| 视频一区免费在线观看| 久久蜜桃av| 国产综合色区在线观看| 成人在线黄色| 久久香蕉精品香蕉| 国产精品久久乐| 日韩国产在线一| 午夜久久av | 精品99在线| 国产精品一区二区三区av| 日本中文字幕视频一区| 免费看欧美美女黄的网站| 蜜臀久久99精品久久一区二区| 中文字幕人成乱码在线观看| 精品久久免费| 精品国产精品国产偷麻豆 | 私拍精品福利视频在线一区| 国产粉嫩在线观看| 欧美国产美女| 国产精品毛片久久| 激情不卡一区二区三区视频在线| 免费一级欧美片在线观看网站| 日韩av中文字幕一区| 日韩精品免费一区二区夜夜嗨| 亚洲精一区二区三区| 日韩在线电影| 青青草91视频| 国产精品一线天粉嫩av| 欧美国产极品| 福利片在线一区二区| 久草免费在线视频| 樱桃视频成人在线观看| xxxxx性欧美特大| 久久精品中文| 国产亚洲午夜| 日韩专区视频网站| 国产日韩亚洲| 精品国产亚洲一区二区在线观看| 国产精品99视频| 欧美成a人免费观看久久| 久久中文字幕av| 日韩网站在线| 日韩精品三级| 精品不卡一区| 久久精品亚洲欧美日韩精品中文字幕| 欧美日韩国产免费观看视频| 国产亚洲网站| 日本精品在线播放| 精品久久福利| 欧美福利一区| 综合激情在线| 久久超碰99| 日韩一区欧美| 亚洲专区欧美专区| 欧美在线91| 国产a久久精品一区二区三区| 成人羞羞视频播放网站| 亚洲一区二区三区高清| 日韩不卡一区二区三区| 精品在线网站观看| 久久精品国产99久久| 亚洲欧美日本视频在线观看| 日本欧美一区| 日韩精品dvd| 蜜桃传媒麻豆第一区在线观看 | 久久久国产精品一区二区中文| 最新国产拍偷乱拍精品| 日韩av不卡一区二区| 精品一区二区三区免费看| 欧洲亚洲一区二区三区| 日本欧美在线看| 欧美成人一二区| 一区二区三区视频免费观看| 亚洲精品激情| 91一区二区| 2023国产精品久久久精品双| 日本99精品| 快播电影网址老女人久久| 视频一区二区三区在线| 老司机精品视频网| 亚洲激情偷拍| 欧美黄色精品| 99国内精品| 国产精品nxnn| 国产综合精品一区| 久久精品超碰| 亚洲一级二级| 国产精品欧美在线观看| 激情综合亚洲| 国产精品tv| 亚洲黄色影院| 欧美1区2区3| 亚洲欧美日韩综合国产aⅴ| 麻豆91精品91久久久的内涵| 99成人在线| 国产成人精品三级高清久久91| 久久国产精品毛片| 三上亚洲一区二区| 日韩一区二区三区精品| 久久男女视频| 国产精品视频首页| 亚洲少妇在线| 国产精品毛片一区二区在线看| 综合干狼人综合首页| 中文字幕色婷婷在线视频| 亚洲精品系列| 国产精品av久久久久久麻豆网| 久久不见久久见中文字幕免费 | 欧美激情 亚洲a∨综合| 性欧美长视频| 日韩精品中文字幕第1页| 日韩欧美中文在线观看| 亚洲午夜精品久久久久久app| 久久99精品久久久野外观看| 久久亚洲电影| 久久国产亚洲精品| 美女久久久久久| 一区二区高清| 日韩欧美一区二区三区免费观看| 欧美片网站免费| 久久国产精品毛片| 日韩欧美二区| 久久影院一区二区三区| 日本亚洲视频在线| 在线视频精品| 久久裸体视频| 精品视频99| 91精品国产自产在线丝袜啪| 99国产精品久久久久久久| 国产高清不卡| 欧美激情三区| 欧美午夜三级| 亚洲97av| 亚洲免费影视| 在线视频观看日韩| 国产白浆在线免费观看| 国产精品久久久久久久久免费高清 | 日韩中文在线电影| 美女精品视频在线| 日本亚洲欧美天堂免费| 99pao成人国产永久免费视频| 超碰超碰人人人人精品| 久久香蕉网站| 国产精品最新| 日韩av中文字幕一区二区三区| 午夜一级久久| 国产亚洲精品久久久久婷婷瑜伽| 欧洲在线一区| 欧美一级鲁丝片| 高清精品久久| 国产一区二区久久久久| 麻豆成人在线观看| 国产精品a级| 久久国产日韩欧美精品| 婷婷五月色综合香五月| 免费一级片91| 午夜在线一区二区| 噜噜噜躁狠狠躁狠狠精品视频 | 五月婷婷亚洲| 在线成人直播|