@Override
public List<Catalog> getCatalogByProjectId(String projectId) {
List<XXX> list = xxxMapper.getXXX();
Map<String, List<XXX>> parentMap = new HashMap<>();
//遍历所有数据,找到根节点菜单
for (Catalog catalog:list) {
List<XXX> childList = parentMap.get(xxx.getParentId());
if (ObjectUtils.isEmpty(childList)) {
childList = new ArrayList<>();
}
childList.add(xxx);
parentMap.put(xxx.getParentId(), childList);
}
//存储根节点的菜单,即一级菜单
List<XXX> rootlist = parentMap.get("-1");
for (XXX xxx: rootlist) {
//找到根节点菜单的时候,寻找这个根节点菜单下的子节点菜单。
findChilds(xxx, parentMap);
}
return rootlist ;
}
private void findChilds(XXX xxx, Map<String, List<XXX>> parentMap){
List<xxx> childlist = parentMap.get(xxx.getCatalogId());
if(childlist != null){
//设置父节点的子节点列表
xxx.setChildes(childlist);
//若子节点存在,接着递归调用该方法,寻找子节点的子节点。
for (XXX childItem : childlist) {
findChilds(childItem, parentMap);
}
}
}
根据自己需要处理,有时候能想到但是距离成功只差一步。