工具类
package com.example.report.util;
import com.example.report.entity.Category;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* 树形结构工具类
*
* 将一组list对象转成树形结构
* 该list需符合设定的字段类型
*
*/
public class TreeUtil {
public static Map<String, Object> mapArray = new LinkedHashMap<String, Object>();
public List<Category> menuCommon;
public List<Object> list = new ArrayList<Object>();
public List<Object> treeMenu(List<Category> menu) {
this.menuCommon = menu;
for (Category treeNode : menu) {
Map<String, Object> mapArr = new LinkedHashMap<String, Object>();
if (treeNode.getPid().equals(0)) {
setTreeMap(mapArr, treeNode);
list.add(mapArr);
}
}
return list;
}
public List<?> menuChild(Integer id) {
List<Object> lists = new ArrayList<Object>();
for (Category a : menuCommon) {
Map<String, Object> childArray = new LinkedHashMap<String, Object>();
if (a.getPid().equals(id)) {
setTreeMap(childArray, a);
lists.add(childArray);
}
}
return lists;
}
private void setTreeMap(Map<String, Object> mapArr, Category treeNode) {
mapArr.put("id", treeNode.getId());
mapArr.put("name", treeNode.getName());
List<?> childrens = menuChild(treeNode.getId());
if (childrens.size() > 0) {
mapArr.put("hasChild", true);
mapArr.put("children", menuChild(treeNode.getId()));
} else {
mapArr.put("hasChildren", false);
mapArr.put("children", null);
}
}
}
示例
/**实现方法**/
public Result getCategoryList() {
//查询数据
List<Category> categoryList = baseMapper.selectList(new QueryWrapper<>());
TreeUtil treeUtil= new TreeUtil();
//将数据转树
List<Object> objects = treeUtil.treeMenu(categoryList);
return Result.ok(objects);
}