当前位置: 首页> 健康> 科研 > 网页设计参考图_展台设计展会展位设计_个人网站设计_上海网站seo策划

网页设计参考图_展台设计展会展位设计_个人网站设计_上海网站seo策划

时间:2025/9/12 6:02:25来源:https://blog.csdn.net/jerry1988mo/article/details/143429967 浏览次数:0次
网页设计参考图_展台设计展会展位设计_个人网站设计_上海网站seo策划

java中使用递归快速构建树形数据结构

1,数据表设计

在设计表时每个记录中应添加parentId字段,用于标识父子关系。
在这里插入图片描述

2,实体类

public class Entity {private Long id;private Long parentId;private List<Entity> children = Lists.newArrayList();// 省略其他属性及get、set方法}

3,service

// 常量 标识第一层级的父idprivate final static Long ROOT_PARENT_ID = 0L;/*** 获取树形结构* @param condition 筛选条件* @return*/public List<Entity> loadTreeData(Condition condition) {List<Entity> entityList = this.dealTreeData(ROOT_PARENT_ID,condition);return entityList;}private List<Entity> dealTreeData(Long parentId,condition condition){// 获取所有的数据表记录List<Entity> allItems = EntityMapper.getAllItems();if(CollectionUtils.isEmpty(allItems)) {return Lists.newArrayList();}// 递归方法List<Entity> tree = this.getTree(allItems, parentId);// 条件筛选this.treeMatch(tree,condition);return tree;}private List<Entity> getTree(List<Entity> allItems,Long parentId){List<Entity> tree = new ArrayList<>();for(Entity entity:allItems){if(entity.getParentId() == parentId){entity.setChildren(getTree(allItems,entity.getId()));tree.add(entity);}}return tree;}public void treeMatch(List<Entity> allTree, condition condition){Iterator<Entity> iter = allTree.iterator();while (iter.hasNext()){// 获取当前遍历到的目录Entity entity = iter.next();boolean shouldRemove = true;// 如果当前目录名称包含关键字,则什么也不做(不移除),否则就看下一级if(StringUtils.hasText(condition.getCondition1()) && !entity.getCondition1().equals(condition.getCondition1())){// 取出下一级目录集合List<Entity> childrenList = entity.getChildren();// 递归if(!CollectionUtils.isEmpty(childrenList)){treeMatch(childrenList,condition);}} else if(StringUtils.hasText(condition.getCondition2()) && !entity.getCondition2().equals(condition.getCondition2())){// 取出下一级目录集合List<Entity> childrenList = entity.getChildren();// 递归if(!CollectionUtils.isEmpty(childrenList)){treeMatch(childrenList,condition);}} else {shouldRemove = false;}// 下一级目录看完了,如果下一级目录全部被移除,则移除当前目录if(CollectionUtils.isEmpty(entity.getItems()) && shouldRemove){iter.remove();}}}
关键字:网页设计参考图_展台设计展会展位设计_个人网站设计_上海网站seo策划

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: