java树结构实例2
` 提示:仅供参考
一、测试实体类
import lombok.Data;
import java.util.List;
/**
* 测试实体类
*/
@Data
public class Catalog {
/**
* 唯一编号 uuid
*/
private String id;
/**
* 名称
*/
private String name;
/**
* 父节点id
*/
private String parentId;
/**
* 子节点(数据库中不存在该字段,仅用于传输数据使用)
*/
private List<?> children;
// 省略 get set
}
二、结构树代码
1.代码
package com.phfund.digital.portal.util;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@Component
public class TreeUtils {
public List<Catalog> tree;
public List<Object> treeMenu(List<Catalog> tree) {
List<Object> list = new ArrayList<Object>();
this.tree = tree;
for (Catalog catalog : tree) {
Map<String, Object> mapArr = new LinkedHashMap<String, Object>();
if ( ! StringUtils.isNotEmpty(catalog.getParentId())) {
setTreeMap(mapArr, catalog);
list.add(mapArr);
}
}
return list;
}
public List<?> child(String id) {
List<Object> lists = new ArrayList<Object>();
for (Catalog a : tree) {
Map<String, Object> childArray = new LinkedHashMap<String, Object>();
if (a.getParentId()!=null && a.getParentId().equals(id)) {
setTreeMap(childArray, a);
lists.add(childArray);
}
}
return lists;
}
private void setTreeMap(Map<String, Object> mapArr, Catalog catalog) {
mapArr.put("id", catalog.getId());
mapArr.put("parentId", catalog.getParentId());
mapArr.put("name", catalog.getName());
List<?> children = child(catalog.getId());
if (children.size() > 0) {
mapArr.put("hasChildren", true);
} else {
mapArr.put("hasChildren", false);
}
mapArr.put("children", child(catalog.getId()));
}
}
2.实例
代码如下(示例):
/**
* 测试 一共有六个Catalog
* 其中:name1下面有三个子节点:name2、name3、name4
* name2下面有两个子节点:name5、name6
*/
public static void main(String[] args) {
List<Catalog> list = new ArrayList<>();
Catalog catalog = new Catalog();
String id = UUID.randomUUID().toString();
catalog.setId(id);
catalog.setName("name1");
list.add(catalog);
catalog = new Catalog();
String id2 = UUID.randomUUID().toString();
catalog.setId(id2);
catalog.setName("name2");
catalog.setParentId(id);
list.add(catalog);
catalog = new Catalog();
String id3 = UUID.randomUUID().toString();
catalog.setId(id3);
catalog.setName("name3");
catalog.setParentId(id);
list.add(catalog);
catalog = new Catalog();
String id4 = UUID.randomUUID().toString();
catalog.setId(id4);
catalog.setName("name4");
catalog.setParentId(id);
list.add(catalog);
catalog = new Catalog();
String id5 = UUID.randomUUID().toString();
catalog.setId(id5);
catalog.setName("name5");
catalog.setParentId(id2);
list.add(catalog);
catalog = new Catalog();
String id6 = UUID.randomUUID().toString();
catalog.setId(id6);
catalog.setName("name6");
catalog.setParentId(id2);
list.add(catalog);
try {
TreeUtils treeUtils = new TreeUtils();
List<Object> tree = treeUtils.treeMenu(list);
System.out.println(JSON.toJSONString(tree));
} catch (Exception e) {
e.printStackTrace();
}
总结
好记性不如烂笔头!!!