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());
}
});
}