java处理数据,输出树形结构
java处理数据,输出树形结构
[var1]
mongo数据库表数据结构,如下
java类处理方法
package com.necibook.resource.model.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang.StringUtils;
import java.util.*;
/**
* @author lbx
* @date 2020-08-24
*/
@Data
public class ResourceExamTypeVo {
/**
* 唯一标识,每三位表示一级
*/
private String id;
/**
* 类型名称
*/
private String typeName;
/**
* 上级类型标识
*/
private String seniorId;
/**
* 学段标识
*/
private String stageId;
/**
* 层级
*/
private String level;
/**
* 排序
*/
private String displayOrder;
@ApiModelProperty(value = "子级集合")
protected List subList;
public void add(ResourceExamTypeVo node) {
if (this.subList == null) {
this.subList = new ArrayList<>();
}
subList.add(node);
}
public static List bulid(List treeNodes, String root) {
Map allNodes = new HashMap();
Iterator var3 = treeNodes.iterator();
while (var3.hasNext()) {
ResourceExamTypeVo treeNode = (ResourceExamTypeVo) var3.next();
allNodes.put(treeNode.getId(), treeNode);
}
Map allRoots = new LinkedHashMap();
Iterator var8 = treeNodes.iterator();
while (true) {
ResourceExamTypeVo parentNode;
while (var8.hasNext()) {
ResourceExamTypeVo treeNode = (ResourceExamTypeVo) var8.next();
if (StringUtils.isNotBlank(root) && treeNode.getId().equals(root)) {
allRoots.put(treeNode.getId(), treeNode);
} else if (StringUtils.isBlank(treeNode.getSeniorId())) {
allRoots.put(treeNode.getId(), treeNode);
} else if (StringUtils.isNotBlank(root) && root.equals(treeNode.getSeniorId()) && !allNodes.containsKey(root)) {
allRoots.put(treeNode.getId(), treeNode);
} else if (StringUtils.isNotBlank(treeNode.getSeniorId())) {
parentNode = (ResourceExamTypeVo) allNodes.get(treeNode.getSeniorId());
if (parentNode != null) {
if (parentNode.getSubList() == null) {
parentNode.setSubList(new ArrayList());
}
parentNode.add(treeNode);
}
}
}
List ret = new ArrayList();
Iterator var10 = allRoots.values().iterator();
while (var10.hasNext()) {
parentNode = (ResourceExamTypeVo) var10.next();
ret.add(parentNode);
}
return ret;
}
}
public static List bulid(List treeNodes) {
return ResourceExamTypeVo.bulid(treeNodes, "0");
}
public ResourceExamTypeVo() {
}
}
serviceImpl,读取数据传入bulid方法
package com.necibook.resource.service.impl;
import com.necibook.resource.model.entity.ResourceExamTypeEntity;
import com.necibook.resource.model.vo.ResourceExamTypeVo;
import com.necibook.resource.service.ResourceExamTypeService;
import ma.glasnost.orika.MapperFacade;
import org.apache.commons.lang3.StringUtils;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class ResourceExamTypeServiceImpl implements ResourceExamTypeService {
@Resource
private MongoTemplate mongoTemplate;
@Resource
private MapperFacade mapperFacade;
@Override
public List baseShoolMajor(String id) {
List resourceExamTypeEntityList = mongoTemplate.findAll(ResourceExamTypeEntity.class);
List resourceExamTypeVoList = mapperFacade.mapAsList(resourceExamTypeEntityList, ResourceExamTypeVo.class);
String root = StringUtils.isNotBlank(id) ? id : "0";
resourceExamTypeVoList = ResourceExamTypeVo.bulid(resourceExamTypeVoList, root);
return resourceExamTypeVoList;
}
}
返回值数据结构,如下
{
"code": 0,
"message": "success",
"tipMsg": null,
"result": [
{
"id": "01",
"typeName": "哲学",
"seniorId": "0",
"stageId": "3",
"level": "1",
"displayOrder": "1",
"subList": [
{
"id": "0101",
"typeName": "哲学类",
"seniorId": "01",
"stageId": "3",
"level": "2",
"displayOrder": "2",
"subList": [
{
"id": "010101",
"typeName": "哲学",
"seniorId": "0101",
"stageId": "3",
"level": "3",
"displayOrder": "3",
"subList": []
},
{
"id": "010102",
"typeName": "逻辑学",
"seniorId": "0101",
"stageId": "3",
"level": "3",
"displayOrder": "3",
"subList": []
},
{
"id": "010103K",
"typeName": "宗教学",
"seniorId": "0101",
"stageId": "3",
"level": "3",
"displayOrder": "3",
"subList": []
},
{
"id": "010104T",
"typeName": "伦理学",
"seniorId": "0101",
"stageId": "3",
"level": "3",
"displayOrder": "3",
"subList": []
}
]
}
]
}
]
}
java处理数据,输出树形结构相关教程