Java递归获取所有父子节点

时间:2025-05-12 09:32:26
/** * @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; }