zoukankan      html  css  js  c++  java
  • 递归获取树状结构子集

    /**
    	 * 根据权限名称查询子项
    	 * @param bean
    	 * @return
    	 */
    	@Override
    	public List<Map<String, Object>> getChildrenListByAuthorityName(AuthorityManagement bean) {
    		log.info("根据权限名称查询子项bean======"+bean);
    		List<Map<String,Object>>treeList=new ArrayList<>();
    		bean.setTenantId(AuthUtil.getTenantId());
    		List<AuthorityManagement> list=list(Condition.getQueryWrapper(bean));
    		if(Func.isNotEmpty(list)){
    			List<AuthorityManagement> returnList=new ArrayList<>();
    			List<AuthorityManagement> toTreeList=getList(list,returnList);
    			if(Func.isNotEmpty(toTreeList)){
    				//将返回的实体类数据list转化成list map类型
    				List<Map<String,Object>>toList=new ArrayList<>();
    				for(AuthorityManagement beanIfo:toTreeList){
    					Map<String,Object>mapIfo=new HashMap<>();
    					mapIfo.put("id",String.valueOf(beanIfo.getId()));
    					mapIfo.put("parentId",beanIfo.getParentId());
    					mapIfo.put("key",String.valueOf(beanIfo.getId()));
    					mapIfo.put("value",String.valueOf(beanIfo.getId()));
    					mapIfo.put("title",beanIfo.getAuthorityName());
    					toList.add(mapIfo);
    				}
    				treeList= TreeListUtil.getChildrenTreeList("id","parentId","children",toList);
    			}
    		}
    		return treeList;
    	}
    
    
    /**
    	 *递归获取树状结构子集
    	 * @param list
    	 * @param returnList
    	 * @return
    	 */
    	public List<AuthorityManagement>getList(List<AuthorityManagement>list,List<AuthorityManagement>returnList){
    		if(Func.isNotEmpty(list)){
    			for(AuthorityManagement bean:list){
    				AuthorityManagement beanInfo=new AuthorityManagement();
    				beanInfo.setParentId(AuthUtil.getTenantId());
    				beanInfo.setParentId(String.valueOf(bean.getId()));
    				List<AuthorityManagement>list1=list(Condition.getQueryWrapper(beanInfo));
    				returnList.add(bean);
    				if(Func.isNotEmpty(list1)){
    					getList(list1,returnList);
    				}
    			}
    
    		}
         return returnList;
    	}
    
    
    /**
    	 *把带有父子机构的数据变成treelist形式 获取子集
    	 * @param id
    	 * @param parentId 父id
    	 * @param children 子项名称
    	 * @param list 传入的list
    	 * @return
    	 */
    	public static List<Map<String, Object>> getChildrenTreeList(String id, String parentId, String children, List<Map<String, Object>>list) {
    		//给list的每一项加一个子项
    		for(int i=0;i<list.size();i++) {
    			list.get(i).put(children, new ArrayList<Map<String, Object>>());
    		}
    		System.out.println("把带有父子机构的数据变成treelist形式list==============="+list);
    		List<Map<String, Object>>treelist=new ArrayList<Map<String, Object>>();
    		for(Map<String, Object> outmap:list) {
    			//System.out.println("把带有父子机构的数据变成outmap==============="+outmap);
    			for(Map<String, Object> inmap:list) {
    				String outid=outmap.get(id).toString();
    				String inpid=inmap.get(parentId).toString();
    				if(outid.equals(inpid)) {
    					List<Map<String, Object>>maplist=(ArrayList) outmap.get(children);
    					maplist.add(inmap);
    				}
    			}
    			String prid=outmap.get(parentId).toString();
    			if(!Func.isEmpty(prid)&& prid.equals("0")) {
    				treelist.add(outmap);
    			}
    		}
    		return treelist;
    	}
    

      

  • 相关阅读:
    蓝桥杯 小朋友排队
    uestc 方老师和缘分
    uestc 方老师抢银行
    Tarjan 求强连通分量模板
    树边,前向边,后向边,横叉边
    hihocoder 第三十六周 二分·二分查找
    hihocoder 第三十四周 二分图三·二分图最小点覆盖和最大独立集
    CF 两题
    hihocoder 第三十三周 二分图一•二分图判定
    hdu 4430 Yukari's Birthday
  • 原文地址:https://www.cnblogs.com/xianz666/p/14266029.html
Copyright © 2011-2022 走看看