java递归树结构
代码
package com.example.demo.util;
import lombok.Data;
import java.util.List;
import java.util.stream.Collectors;
@Data
public class TreeMenu {
private Integer id;
private String label;
private Integer parentId;
private List<TreeMenu> childNode;
public static List<? extends TreeMenu> buildTree(List<? extends TreeMenu> record, Integer rootNode) {
return record.stream().filter(t -> rootNode.equals(t.getParentId())).map(t -> {
t.setChildNode((List<TreeMenu>) getChildNode(t.getId(), record));
return t;
}).collect(Collectors.toList());
}
private static List<? extends TreeMenu> getChildNode(Integer code, List<? extends TreeMenu> record) {
return record.stream().filter(t -> code.equals(t.getParentId())).map(t -> {
t.setChildNode((List<TreeMenu>) getChildNode(t.getId(), record));
return t;
}).collect(Collectors.toList());
}
}