Browse Source

【网格实体化运作打分】考核项配置管理-王公峰-2020-12-08

feature/subCheck
wanggongfeng 5 years ago
parent
commit
7233415d30
  1. 39
      epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/TreeNodeNew.java
  2. 72
      epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/TreeUtilsNew.java

39
epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/TreeNodeNew.java

@ -0,0 +1,39 @@
package com.elink.esua.epdc.commons.tools.utils;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class TreeNodeNew<T> implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
private String pid;
private List<T> children = new ArrayList();
public TreeNodeNew() {
}
public String getId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}
public String getPid() {
return this.pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public List<T> getChildren() {
return this.children;
}
public void setChildren(List<T> children) {
this.children = children;
}
}

72
epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/TreeUtilsNew.java

@ -0,0 +1,72 @@
package com.elink.esua.epdc.commons.tools.utils;
import com.elink.esua.epdc.commons.tools.validator.AssertUtils;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* 树形结构工具类菜单部门等
*
* @author Mark sunlightcs@gmail.com
* @since 1.0.0
*/
public class TreeUtilsNew {
/**
* 根据pid构建树节点
*/
public static <T extends TreeNodeNew> List<T> build(List<T> treeNodes, Long pid) {
//pid不能为空
AssertUtils.isNull(pid, "pid");
List<T> treeList = new ArrayList<>();
for (T treeNode : treeNodes) {
if (pid.equals(treeNode.getPid())) {
treeList.add(findChildren(treeNodes, treeNode));
}
}
return treeList;
}
/**
* 查找子节点
*/
private static <T extends TreeNodeNew> T findChildren(List<T> treeNodes, T rootNode) {
for (T treeNode : treeNodes) {
if (rootNode.getId().equals(treeNode.getPid())) {
rootNode.getChildren().add(findChildren(treeNodes, treeNode));
}
}
return rootNode;
}
/**
* 构建树节点
*/
public static <T extends TreeNodeNew> List<T> build(List<T> treeNodes) {
List<T> result = new ArrayList<>();
//list转map
Map<String, T> nodeMap = new LinkedHashMap<>(treeNodes.size());
for (T treeNode : treeNodes) {
nodeMap.put(treeNode.getId(), treeNode);
}
for (T node : nodeMap.values()) {
T parent = nodeMap.get(node.getPid());
if (parent != null && !(node.getId().equals(parent.getId()))) {
parent.getChildren().add(node);
continue;
}
result.add(node);
}
return result;
}
}
Loading…
Cancel
Save