安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

Java用stream归纳树形结构

8月12日 虎狼旗投稿
  Java知识点整理正在进行中,关注我,持续给您带来简单,实用的Java编程技巧。
  在Java开发中,有时候会遇到将存在父子关系的集合转化为树形接口的场景,比如菜单数据的处理。这时可以使用stream归纳出树形结构。
  具体看代码:存在父子关系的实体类Node表示节点packagecom。bbzd。stream。importjava。util。L节点实体类包含子节点列表childrenListdate202210320:59publicclassNode{节点IDprivateS节点名称privateS父节点IDprivateS子节点列表privateListNodechildrenLpublicNode(Stringid,Stringname,Stringpid){this。this。this。}为了节省篇幅,此处省去get,set方法OverridepublicStringtoString(){returnNode{idid,namename,pidpid,childrenListchildrenList};}}使用stream进行归纳的示例类packagecom。bbzd。stream。importjava。util。ArrayLimportjava。util。Limportjava。util。stream。C示例:用流的方式归纳树型结构节点date202210321:04publicclassStreamTreeListDemo{publicstaticvoidmain(String〔〕args){节点信息,一级节点是省,二级节点是市,三级节点是区节点关系:河北省沧州市华新区运河区河南省开封市鼓楼区龙亭区Nodenode1newNode(1,河北省,0);Nodenode2newNode(2,沧州市,1);Nodenode3newNode(3,华新区,2);Nodenode4newNode(4,运河区,2);Nodenode5newNode(5,河南省,0);Nodenode6newNode(6,开封市,5);Nodenode7newNode(7,鼓楼区,6);Nodenode8newNode(8,龙亭区,6);ListNodenodeListnewArrayList();nodeList。add(node1);nodeList。add(node2);nodeList。add(node3);nodeList。add(node4);nodeList。add(node5);nodeList。add(node6);nodeList。add(node7);nodeList。add(node8);0代表一级节点ListNodetreeListstreamToTree(nodeList,0);输出显示归纳后的结果System。out。println(treeList);}将节点列表归纳成树结构的方式paramnodeList节点列表parampid父节点IDreturn树结构的节点publicstaticListNodestreamToTree(ListNodenodeList,Stringpid){ListNodelistnodeList。stream()过滤一级节点。filter(parentparent。getPid()。equals(pid))对二级节点和三级递归进行归纳,归纳到对应的父节点上。map(child{child。setChildrenList(streamToTree(nodeList,child。getId()));})。collect(Collectors。toList());}}
  程序处理后,节点集合已经按父子关系归纳成了树形结构,输出结果
  Node{id1,name河北省,pid0,childrenList〔Node{id2,name沧州市,pid1,childrenList〔Node{id3,name华新区,pid2,childrenList〔〕},Node{id4,name运河区,pid2,childrenList〔〕}〕}〕},Node{id5,name河南省,pid0,childrenList〔Node{id6,name开封市,pid5,childrenList〔Node{id7,name鼓楼区,pid6,childrenList〔〕},Node{id8,name龙亭区,pid6,childrenList〔〕}〕}〕}
  总结用stream归纳树形结构代码看起来比较简洁,挺好。本例中使用的stream特性属于比较晦涩的概念,看不懂的小伙伴也不要着急,先记下来有这种用法姐可以了。关注我,后面我会单独写些文章来阐述说明stream特性。
投诉 评论 转载

北京值得去的景区,十八个名潭撒落在幽深峡谷里,深受游客的喜爱北京值得去的景区,十八个名潭撒落在幽深峡谷里,深受游客的喜爱北京市作为我国的首都同时也是我国四个直辖市之一,一直以来除了在经济发展方面所展现出来的强悍实力以外,其所具备的……雨季,怎么能少了一双造型百搭颜值高的雨鞋?雨季,怎么能少了一双造型百搭的雨鞋呢?雨季难穿的长裤。但如果你有雨靴,OK!雨靴可以防止长裤的末端在雨中被弄湿。下雨时,室内活动比室外活动多!由于天气潮湿,室内经常整天开……你的背影成了永久的思念,任由眼泪成为十月的雨原创孤月冷梅伤感的天气忽然下起雨温暖的回忆又想起那个你眼泪是十月的雨到处都是你的气息短短十年你是我余生的后会无期而我却总在……Java用stream归纳树形结构Java知识点整理正在进行中,关注我,持续给您带来简单,实用的Java编程技巧。在Java开发中,有时候会遇到将存在父子关系的集合转化为树形接口的场景,比如菜单数据的处理……喜讯!广州队为保级或补报两大功勋进一线队,昔日留洋指挥官在列广州队在新赛季中超联赛开局阶段的比赛表现并不好,球队在首轮联赛还有不错发挥。面对申花踢出了自己的精神面貌。正当球迷认为广州队马上要爆发时,球队在第二轮比赛以0比6输给了武汉三镇……深扒羊了个羊的幕后推手《羊了个羊》突然爆了!一方面是游戏在社交网站上病毒式传播;另一方面它又被不少玩家吐槽太难、抄袭、吃相难看等等,这些情况的发生,甚至让游戏刚拿下微博热搜榜一,服务器却崩了。……10!中国队创纪录,00后国脚闪耀全场,国足官方发声,双线奏国足早已经结束了2022年所有的比赛任务,中超联赛也在如火如荼进行当中。与此同时,各年龄段国字号球队都没闲着,或是有大赛任务,或是在欧洲拉练。比如U19国足正在冲击亚青赛正赛,……埃博拉为什么如此恐怖埃博拉病毒是1976年在非洲扎伊尔第一次发现。自一个患者发病以来,照顾他的医护人员和亲人全部随后患病,出现高热、头痛、咽痛、肌肉酸痛等类似感冒的症状,伴随呕吐、腹痛、腹泻等消化……6套盐系少女的夏日穿搭,美丽与帅气并存,穿出自己最独特sty每个女生都想养成自己最独特的风格,但不知道该怎么穿。其实夏天我想养成和别人不一样的风格。最简单的是为服装风格另辟蹊径。今年流行的性感造型、甜美系,多了也很难感受到新鲜。相反,应……CBA三消息山西官宣裁掉六人,赵维伦升入一队,方硕膝盖已痊愈大家好呀,我是北柠,各位小伙伴们要养成先赞后看的习惯哦!山西队这个休赛期球员阵容有了比较大的变化,他们从青年队中提拔上来了一批年轻小将,这些球员都是山西青年队中的主力球员……CBA揭幕战山东战深圳,内线争霸,外线争锋,周鹏首秀,谁主沉对于山东男篮来说,休赛期发生了翻天覆地的变化,王晗的入主为山东注入新的动力,球迷都希望山东男篮在王晗率领下重新复制巩大帅时期凝聚力与号召力,距离10月10日新赛季开启还有不到两……美国阿波罗登月是真是假?不用争了,连宇航员留下的脚印都拍到了阿波罗登月的真实性,一直是大家争论的焦点,很多人认为美国宇航员所谓的登月画面,其实是在摄影棚里拍的,是不折不扣地造假。特别是现在美国重返月球的SLS火箭首次发射一再推迟,使出了……
给娃起名记原神新角色云堇外服疯狂吐槽,国服文化输出我们爽了为什么走着走着,离初心越来越远了?恭喜热火!同情塔图姆!湖人离队第一人产生,罗德曼勇闯龙潭虎穴iPhoneiOS15。6。1养老推荐深度体验动不动就出汗,和不爱出汗的人,谁更健康?看完或了解别再说大臀穿紧身裤俗气了,今年新出的大臀穿搭指南很高级上海杯第5轮王天一郑惟桐会师决赛,女子吴可欣陈幸琳争夺冠军饮食上怎样才能控制血糖?世锦赛60米科尔曼雅各布斯大战开启布雷希6秒46第1诞5国家领取4050社保补贴利弊分析,带来的好处和坏处一览春季补钙别只喝牛奶,这5种食物是首选,钙含量高,帮助孩子长个开阳是哪里(开阳县名字由来)远行的老兵,请留下你的故事再出发突发!意大利总理递交辞呈,总统拒绝,啥情况?乌中部城市遭导弹可运行4000款PS4游戏?索尼PS5向后兼容性实测风雷决21北周孝闵帝宇文觉有几个老婆宇文觉的老婆都是谁同心实验学校生存保卫战一个印象深刻的人aj1所有配色加名称改写小儿垂钓作文税收管理员个人述职报告恭喜C罗,超越梅西之路浮现!意甲豪门成他首选,可复制老马神迹

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利