Java递归获取所有父子节点
/**
* @param list 数据库里面获取到的全量菜单列表
* @return
*/
public static List<Label> parseMenuTree(List<Label> list){
List<Label> result = new ArrayList<Label>();
// 1、获取第一级节点
for (Label label : list) {
if(0 == label.getParentId()) {
result.add(label);
}
}
// 2、递归获取子节点
for (Label parent : result) {
parent = recursiveTree(parent, list);
}
return result;
}
/**
* 获取节点及其子节点返回对象
* @param parent
* @param list
* @return
*/
public static Label recursiveTree(Label parent, List<Label> list) {
List<Label> labels = new ArrayList<>();
for (Label label : list) {
if(Objects.equals(parent.getLableId(),label.getParentId())) {
label = recursiveTree(label, list);
labels.add(label);
parent.setLabels(labels);
}
}
return parent;
}