将集合递归获取树形结构:
/**
*
* 递归获取数据
* @param alist:所有分类
* @param subjname:对应统计的项目名称
* @param pk:对应项目主键
* @param reportList: 最后统计的结果集
* @param count:项目级别
*/
public void getReportVO(ArrayList<ReportVO> alist,String subjname,String pk,ArrayList<ReportVO> reportList,int count) throws BusinessException {
ArrayList<String> str=new ArrayList<String>();
//不同级别用空格区分
for(int i=0;i<count;i++){
subjname=" "+subjname;
}
//根据pk获取末节点VO
getEndNodes( pk, alist, str);
//存在下级节点 则查询出所有数据
if(str!=null&&!str.equals("")){
String[][] data=new String[str.size()][1];
for(int i=0;i<str.size();i++){
data[i][0]=str.get(i);
}
//根据项目名和末级节点得到数据
ReportVO reportvo=getEndNodeData(subjname,data);
reportList.add(reportvo);
}else{
//不存在下级节点
String[][] data=new String[1][1];
data[0][0]=pk;
ReportVO reportvo=getEndNodeData(subjname,data);
reportList.add(reportvo);
}
//递归统计节点数据
for(int i=0;i<alist.size();i++){
if(alist.get(i).getParentpk()!=null&&pk.equals(alist.get(i).getParentpk())){
ReportVO reportvo=alist.get(i);
String pk_costsubj_type = alist.get(i).getPk();
getReportVO(alist,reportvo.getSubjname(),pk_costsubj_type,reportList,count+1);
}
}
}
/**
*
* 递归方法 查找末级节点
* @param pk 项目主键
* @param list 所有分类
* @param str 所有末级节点pk集合
*/
public void getEndNodes(String pk, ArrayList<ReportVO> list,ArrayList<String> str) throws BusinessException {
boolean flag = false;
for(int i=0;i<list.size();i++){
//查找该主键的子节点
if(list.get(i).getParentpk()!=null&&pk.equals(list.get(i).getParentpk())){
flag = true;
String pk_costsubj_type = list.get(i).getPk();
getEndNodes(pk_costsubj_type,list,str);
}
}
//如果是最末级
if(!flag){
str.add(pk);
}
}
分享到:
相关推荐
用递归实现C#树形结构 ,用递归实现C#树形结构 ,
springJpa单标递归树形结构
Java递归算法构造JSON树形结构,Java递归算法构造JSON树形结构Java递归算法构造JSON树形结构
1、ACM题目,使用递归算法实现树形结构; 2、题目要求: 把图书的类别按照数形用控制台出来: 如下结构: 哲学 古代哲学 道德经 现代哲学 哲学的故事
js 树形结构数据遍历条件判断删除对应数据
最近用到了需要显示树形结构,经过几个小时的瞎整,做出了个示例,从查询数据到显示,包括CRUD
oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的。这篇文章给大家介绍了Oracle递归树形结构查询功能,需要的朋友参考下
javascript递归形成树形结构
Java对List结构数据递归实现树形结构数据
Java递归将List转为树形结构 博客地址:https://blog.csdn.net/weixin_38500202/article/details/110456363
mysql 树形结构查询,使用存储过程,实现mysql的树形结构查询
读取数据库树形数据使用递归函数构造树+C#+数据库&C#构造树
递归方式树形菜单实现递归方式树形菜单实现
使用递归和dom遍历dom树形结构 完整代码
主要介绍了vue实现的树形结构加多选框,结合实例形式分析了在之前递归组件实现vue树形结构的基础之上再加上多选框功能相关操作技巧,需要的朋友可以参考下
运用递归生成树形结构控件.NET Treeview 这是我在网上收集的,不是本人编的,不过本人用了,还感觉不错
基于递归算法和树形控件的动态树形图的实现基于递归算法和树形控件的动态树形图的实现基于递归算法和树形控件的动态树形图的实现基于递归算法和树形控件的动态树形图的实现基于递归算法和树形控件的动态树形图的实现
通过递归方法循环打印字节点。不需要层来控制。
java递归树型结构通用数据库