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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。