递归:
entity层
@Data
public class Tree {
private Integer id;
private String name;
private Integer pid;
private List<Tree> treeList =new ArrayList<>();
}
TreeServiceImpl 层:
public List<Tree> getTree() {
List<Tree> tree = treeDao.getTree();//返回所有父级
List<Tree> allTree = treeDao.findAllTree();//返回所有数据
for (Tree list : tree) {
list.setTreeList(treeList(allTree,list.getId()));
}
return tree;
}
private static List<Tree> treeList(List<Tree> list, Integer rootId) {
List<Tree> newList = new ArrayList<>();
for (Tree tree : list) {
if (tree.getPid() == rootId.intValue()) {
List<Tree> tempList = treeList(list, tree.getId());
tree.setTreeList(tempList);
newList.add(tree);
}
}
return newList;
}
Map实现
public List<Tree> getTree() {
//返回
List<Tree> allTree = treeDao.findAllTree();
Map<Long,Tree> map = new HashMap<>();
//ID 为 key 存储到map 中
for (Tree tree:allTree) {
map.put(tree.getId().longValue(),tree);
}
List<Tree> treeList=new ArrayList<Tree>();
for (Tree tree:allTree) {
//子集ID返回对象,有则添加。
Tree tree1 = map.get(tree.getPid().longValue());
if(tree1 != null){
tree1.getTreeList().add(tree);
}else {
treeList.add(tree);
}
}
return treeList;
}