Java数据封装树形结构代码实例
这篇文章主要介绍了Java数据封装树形结构代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1、实体类
@data publicclassPublishServiceTypeimplementsComparable{ /** * */ privatestaticfinallongserialVersionUID=-3572108154932898825L; /* *@see[code] *@comment类型标识 */ privateStringcode; /* *@see{createtime} *@comment创建时间 */ privatejava.util.Datecreatetime; /* *@see{defaultmanual} *@comment服务类型默认使用手册 */ privateStringdefaultmanual; /* *@see{description} *@comment服务类型描述 */ privateStringdescription; /* *@see{id} *@comment主键 */ privateStringid; /* *@see{isdelete} *@comment是否可以删除 */ privateIntegerisdelete; /* *@see{lastmodifytime} *@comment最近修改时间 */ privatejava.util.Datelastmodifytime; /* *@see{name} *@comment服务类型名称 */ privateStringname; /* *@see{parentid} *@comment服务类型父节点 */ privateStringparentid; /** *排序 */ privateIntegersort; privateList children; }
2、数据封装
@Override publicListfindList(Stringname){ List list=publishServiceTypeMapper.findByName(name); if(JudgeUtil.isEmpty(list)){ returnnull; } //父子级组装 returnparentAndChildren(list); } privateList parentAndChildren(List list){ //最顶层根节点 List rootList=newArrayList<>(); //非最顶层根节点 List bodyList=newArrayList<>(); for(PublishServiceTypepublishServiceType:list){ if(StringUtils.isBlank(publishServiceType.getParentid())){ rootList.add(publishServiceType); }else{ bodyList.add(publishServiceType); } } returngetTree(rootList,bodyList); } publicList getTree(List rootList,List bodyList){ if(!JudgeUtil.isEmpty(bodyList)){ //声明一个map,用来过滤已操作过的数据 Map map=newHashMap<>(bodyList.size()); rootList.forEach(parent->getChild(parent,bodyList,map)); returnrootList; }else{ returnrootList; } } privatevoidgetChild(PublishServiceTypeparent,List bodyList,Map map){ List childList=newArrayList<>(); bodyList.stream().filter(c->!map.containsKey(c.getId())) .filter(c->c.getParentid().equals(parent.getId())) .forEach(c->{ map.put(c.getId(),c.getParentid()); getChild(c,bodyList,map); childList.add(c); }); parent.setChildren(childList); }
3、结果
{ "code":20000, "message":"成功", "data":[ { "code":null, "createtime":null, "defaultmanual":null, "description":null, "id":"dc1d70b9eb7b4df3bbe8dcc6a93cbd57", "isdelete":-1, "lastmodifytime":null, "name":"基础服务", "parentid":"", "sort":1, "children":[ { "code":null, "createtime":null, "defaultmanual":null, "description":null, "id":"b1779671ef1b45e0a9a8a1edbff03f1e", "isdelete":-1, "lastmodifytime":null, "name":"数据源服务", "parentid":"dc1d70b9eb7b4df3bbe8dcc6a93cbd57", "sort":2, "children":[ { "code":null, "createtime":null, "defaultmanual":null, "description":null, "id":"2a38a8254ec348e9b54c9bf4622f23db", "isdelete":1, "lastmodifytime":null, "name":"测试添加数据库服务2", "parentid":"b1779671ef1b45e0a9a8a1edbff03f1e", "sort":null, "children":[] } ] }, { "code":null, "createtime":null, "defaultmanual":null, "description":null, "id":"d4f3b047dc2d467a9b404ded8acf4673", "isdelete":1, "lastmodifytime":null, "name":"text_lsa", "parentid":"dc1d70b9eb7b4df3bbe8dcc6a93cbd57", "sort":null, "children":[] } ] }, { "code":null, "createtime":null, "defaultmanual":null, "description":null, "id":"af1b4a4d2f074fa19e1dae0a5540a5bf", "isdelete":1, "lastmodifytime":null, "name":"测试添加1", "parentid":"", "sort":null, "children":[] }, { "code":null, "createtime":null, "defaultmanual":null, "description":null, "id":"62e15d859a224126884888a55df355a7", "isdelete":1, "lastmodifytime":null, "name":"测试添加2", "parentid":"", "sort":null, "children":[] } ] }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。