1、创建实体类
@Getter
@Setter
public class Muem {
private Integer id;
private Integer parentId;
private String name;
List<Muem> child;
public Muem (Integer id,Integer parentId,String name){
this.id = id;
this.parentId = parentId;
this.name = name;
}
public Muem (){
}
2、递归方法类
public class MenuTree {
private List<Muem> menuList = new ArrayList<Muem>();
public MenuTree(List<Muem> menuList) {
this.menuList=menuList;
}
public List<Muem> getParents(List<Muem> muems){
List<Muem> tree = new LinkedList<>();
Iterator<Muem> iterator = muems.iterator();
while (iterator.hasNext()){
Muem muem = iterator.next();
//获取最上层根
if (muem.getParentId() ==null || muem.getParentId().equals(0)){
Muem child = new Muem();
BeanUtils.copyProperties(muem,child);
tree.add(child);
iterator.remove();
}
}
//递归写树
this.recursion(tree,muems);
return tree;
}
public void recursion(List<Muem> tree,List<Muem> muems){
for (Muem t : tree){
Iterator<Muem> iterator = muems.iterator();
while (iterator.hasNext()){
Muem muem = iterator.next();
if (t.getId().equals(muem.getParentId())){
if (null == t.getChild()){
List<Muem> muemList = new ArrayList<>();
t.setChild(muemList);
}
Muem child = new Muem();
BeanUtils.copyProperties(muem,child);
t.getChild().add(child);
iterator.remove();
}
}
if (null != t.getChild()){
this.recursion(t.getChild(),muems);
}else{
t.setChild(new ArrayList<>()); ;
}
}
}
}
3、main方法测试
public static void main(String[] args) {
Muem muem1 = new Muem(1,null,"系统管理");
Muem muem2 = new Muem(2,1,"权限");
Muem muem3 = new Muem(3,1,"密码");
Muem muem4 = new Muem(4,1,"用户");
Muem muem5 = new Muem(5,1,"字典");
Muem muem6 = new Muem(6,null,"数据统计");
Muem muem7 = new Muem(7,6,"个人数据");
Muem muem8 = new Muem(8,6,"团队");
Muem muem9 = new Muem(9,0,"基础信息");
Muem muem10 = new Muem(10,0,"其他信息");
List<Muem> muems = new ArrayList<>();
muems.add(muem1);
muems.add(muem2);
muems.add(muem3);
muems.add(muem4);
muems.add(muem5);
muems.add(muem6);
muems.add(muem7);
muems.add(muem8);
muems.add(muem9);
muems.add(muem10);
MenuTree menuTree = new MenuTree(muems);
List<Muem> menuList = new ArrayList<>();
menuList = menuTree.getParents(muems);
String jsonOutput= JSON.toJSONString(menuList);
System.out.println(jsonOutput);
}