Java 递归遍历多个*节点tree

Java 递归遍历多个*节点tree

引用外部依赖

			<dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <guava.version>18.0</guava.version>
   		</dependency>
注释: 版本随意.只需要有 ArrayListMultimap 一个key 对应多个values 即可  
也可以自己写一个 Map<Integer,List<String>> levelmap=new HashMap<Integer,List<String>>();

代码:

 /**
     * 递归获取树层结构
     */
    public List<latestObject> recursionTransition(List<object> primaryObject, Integer topNode) {
    	// 自定义的 bean 复制对象 ( 可以自己写一个  就是把原来的对象 复制到新的对象里面,
    	//  其实就是多个一个 list<latestObject> 的参数 可以进行递归节点操作 )
        List<latestObject> latestObjectList = BeanCopierUtil.copyBeanList(primaryObject, latestObject.class);
        // 创建一个 一个key 多个value 的这个对象
        ArrayListMultimap<Integer, latestObject> multiMap = ArrayListMultimap.create();
        List<latestObject> latestObjectListA = new ArrayList<>();
        latestObjectList.forEach(latestObject-> {
            multiMap.put(latestObject.getParentId(), latestObject);
            if (latestObject.getParentId().equals(parentId)) {
                latestObjectListA .add(latestObject);
            }
        });

        regionalLevel(multiMap, menuListVOList1, parentId);

        return latestObjectListA;
    }

    /**
     * 递归遍历对象
     */
    public void regionalLevel(ArrayListMultimap<Integer, latestObject> multiMap, List<latestObject> latestObjectListA ,,Integer id) {
        latestObjectListA .forEach(latestObject-> {
            List<latestObject> latestObjectList = multiMap.get(id);
            if (!CollectionUtils.isEmpty(latestObjectList)) {
                if (latestObject.getId().equals(id)) {
                    latestObject.setMenuListVOList(latestObjectList );
                } 
                   regionalLevel(multiMap, latestObjectListA, latestObject.getId());
            }
        });
    }

上一篇:MySQL(20)--- 排序


下一篇:获取汉字首字母并分组排列 PHP