项目开发-树形层级结构中的数量统计
2015-03-12 16:05
225 查看
项目开发中,有一 菜单的树形结构展示时,需要统计各个菜单下记录的总数,通常如果树形结构的深度为2(只有两级菜单的话),使用for循环统计没有问题,但是如果树形菜单的深度没有限制,就不能通过两次for循环来实现统计了,只能借助递归来统计了,使用一个全局map记录每次统计的值。简单实现如下:
具有层级结构的元素Source类,省略getter/setter:
具有层级结构的元素Source类,省略getter/setter:
public class Source { private Source parent; private String id; private String name; private List<Source> children; }统计方法,只需要层级结构的根元素,即可完成各个菜单子元素的统计:
import java.util.List; import java.util.Map; public class SourceCountUtil { /** * 树形结构展示的某个节点的统计数值=孩子总数+孩子的孩子总数 * @param root * @param result * @return */ public static int doCount(Source root,Map<String,Object> result){ int count = 0; List<Source> list = root.getChildren(); if(list==null ||list.size()==0){ return count; } for (Source child : list) { //统计当前元素的子节点个数 count++; //统计子节点的孩子总数 int cur_cnt=doCount( child,result); result.put(String.valueOf(child.getId()), cur_cnt); count += cur_cnt; } //返回前记录当前节点的统计个数 result.put(String.valueOf(root.getId()), count); return count; } }每次利用递归统计完一个菜单的子节点个数后,存入map中,最后输出的result存储了所有菜单的子元素的个数。dtree.js实现页面菜单展示也是通过递归完成的。结合上述统计,可以得到如下的菜单统计效果:
相关文章推荐
- 项目开发-树形层级结构中的数量统计
- php项目二次开发结构学习方法
- Android开发学习 之 二、Android项目结构
- 项目开发容易出错情况统计
- Atitit.Guibutton与面板---项目规模的评估----文件数统计,结构,代码行数,每类型文件行数.
- SharpStreaming项目开发纪实:项目工程结构调整
- java Web开发基础(一)工程项目文档结构
- Android开发之旅:HelloWorld项目的目录结构
- Android开发之旅:HelloWorld项目的目录结构
- 解读gradle编译项目的build目录结构 - Android Studio开发
- Android开发之旅:HelloWorld项目的目录结构
- Android开发(1)——项目结构
- iOS项目的目录结构和开发流程
- 统计分析系统开发-项目管理经验
- Ionic-wechat项目边开发边学(二):目录结构,header标签与路由
- Winfrom开发之通过treeview实现树形结构
- 树形结构在开发中的应用
- 项目中树形结构的添加与立即删除该数据问题
- 安卓开发(2)——HelloWorld项目的目录结构
- iOS项目的目录结构和开发流程