List数据转换成数状数据
1.定义封装树状数据的类
public class AreaTree implements Serializable {
private Integer id;
private String name;
private Integer parentId;
private String des;
private List<AreaTree> children;
}
2.主要代码
public PageInfo<AreaTree> queryAreaTree(String projectId, Pagination pagination) {
PageHelper.startPage(pagination.getPage(), pagination.getResults());
List<AreaTree> list = mapper.queryAreaList(projectId);
List<AreaTree> areaTrees = buildByRecursive(list);
return new PageInfo<AreaTree>(areaTrees);
}
public static List<AreaTree> buildByRecursive(List<AreaTree> treeNodes) {
List<AreaTree> trees = new ArrayList<AreaTree>();
for (AreaTree treeNode : treeNodes) {
if ("0".equals(treeNode.getParentId().toString())) {
trees.add(findChildren(treeNode,treeNodes));
}
}
return trees;
}
public static AreaTree findChildren(AreaTree treeNode,List<AreaTree> treeNodes) {
for (AreaTree it : treeNodes) {
if(treeNode.getId().equals(it.getParentId())) {
if (treeNode.getChildren() == null) {
treeNode.setChildren(new ArrayList<AreaTree>());
}
treeNode.getChildren().add(findChildren(it,treeNodes));
}
}
return treeNode;
}