优化代码

This commit is contained in:
阿沐 2022-12-10 14:45:18 +08:00
parent 0e152e2ac7
commit ae3897ba78

View File

@ -16,12 +16,12 @@ public class TreeUtils {
/** /**
* 根据pid构建树节点 * 根据pid构建树节点
*/ */
public static <T extends TreeNode> List<T> build(List<T> treeNodes, Long pid) { public static <T extends TreeNode<T>> List<T> build(List<T> treeNodes, Long pid) {
// pid不能为空 // pid不能为空
AssertUtils.isNull(pid, "pid"); AssertUtils.isNull(pid, "pid");
List<T> treeList = new ArrayList<>(); List<T> treeList = new ArrayList<>();
for(T treeNode : treeNodes) { for (T treeNode : treeNodes) {
if (pid.equals(treeNode.getPid())) { if (pid.equals(treeNode.getPid())) {
treeList.add(findChildren(treeNodes, treeNode)); treeList.add(findChildren(treeNodes, treeNode));
} }
@ -33,9 +33,9 @@ public class TreeUtils {
/** /**
* 查找子节点 * 查找子节点
*/ */
private static <T extends TreeNode> T findChildren(List<T> treeNodes, T rootNode) { private static <T extends TreeNode<T>> T findChildren(List<T> treeNodes, T rootNode) {
for(T treeNode : treeNodes) { for (T treeNode : treeNodes) {
if(rootNode.getId().equals(treeNode.getPid())) { if (rootNode.getId().equals(treeNode.getPid())) {
rootNode.getChildren().add(findChildren(treeNodes, treeNode)); rootNode.getChildren().add(findChildren(treeNodes, treeNode));
} }
} }
@ -45,18 +45,18 @@ public class TreeUtils {
/** /**
* 构建树节点 * 构建树节点
*/ */
public static <T extends TreeNode> List<T> build(List<T> treeNodes) { public static <T extends TreeNode<T>> List<T> build(List<T> treeNodes) {
List<T> result = new ArrayList<>(); List<T> result = new ArrayList<>();
// list转map // list转map
Map<Long, T> nodeMap = new LinkedHashMap<>(treeNodes.size()); Map<Long, T> nodeMap = new LinkedHashMap<>(treeNodes.size());
for(T treeNode : treeNodes){ for (T treeNode : treeNodes) {
nodeMap.put(treeNode.getId(), treeNode); nodeMap.put(treeNode.getId(), treeNode);
} }
for(T node : nodeMap.values()) { for (T node : nodeMap.values()) {
T parent = nodeMap.get(node.getPid()); T parent = nodeMap.get(node.getPid());
if(parent != null && !(node.getId().equals(parent.getId()))){ if (parent != null && !(node.getId().equals(parent.getId()))) {
parent.getChildren().add(node); parent.getChildren().add(node);
continue; continue;
} }