一、前言 我们在日常开发中,必不可少的就是树形结构。有的时候可以使用mybatis的resultMap进行转化,有的时候需要进行Java进行手动转化为树结构。今天和大家分析一个JDK8新特性Stream来实现list到树形结构的转化!二、创建返回前端的实体类VOimportlombok。Dimportjava。util。Lauthorwangzhenjundate202222810:28DatapublicclassNodeVO{privateSprivateSprivateSprivateListNodeVOpublicNodeVO(Stringid,Stringname,Stringpid){this。this。this。}}三、list转树形方法publicstaticListNodeVOstreamToTree(ListNodeVOtreeList,StringparentId){ListNodeVOlisttreeList。stream()过滤父节点。filter(parentparent。getPid()。equals(parentId))把父节点children递归赋值成为子节点。map(child{child。setChildren(streamToTree(treeList,child。getId()));})。collect(Collectors。toList());}四、测试publicstaticvoidmain(String〔〕args){NodeVONodeVO1newNodeVO(1,山东省,0);NodeVONodeVO2newNodeVO(2,青岛市,1);NodeVONodeVO3newNodeVO(3,市北区,2);NodeVONodeVO4newNodeVO(4,济南市,1);NodeVONodeVO5newNodeVO(5,浙江省,0);NodeVONodeVO6newNodeVO(6,杭州市,5);NodeVONodeVO7newNodeVO(7,西湖区,6);ListNodeVOlistnewArrayList();list。add(NodeVO1);list。add(NodeVO2);list。add(NodeVO3);list。add(NodeVO4);list。add(NodeVO5);list。add(NodeVO6);list。add(NodeVO7);默认父节点id为0ListNodeVOnodeVOListstreamToTree(list,0);System。out。println(JSON。toJSONString(nodeVOList));} 结果展示:〔{children:〔{children:〔{children:〔〕,id:3,name:市北区,pid:2}〕,id:2,name:青岛市,pid:1},{children:〔〕,id:4,name:济南市,pid:1}〕,id:1,name:山东省,pid:0},{children:〔{children:〔{children:〔〕,id:7,name:西湖区,pid:6}〕,id:6,name:杭州市,pid:5}〕,id:5,name:浙江省,pid:0}〕五、总结 也可以使用两个for来实现,小编还是觉得Stream比较优雅哈,哈哈哈!!如果对你有用就点个赞呗! 推广自己网站的时间到了!!! 小王博客站