mirror of
https://github.com/201206030/novel-plus.git
synced 2025-07-01 15:26:37 +00:00
89 lines
1.8 KiB
Java
89 lines
1.8 KiB
Java
package com.java2nb.common.utils;
|
|
|
|
import com.java2nb.common.domain.Tree;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
public class BuildTree {
|
|
|
|
public static <T> Tree<T> build(List<Tree<T>> nodes) {
|
|
|
|
if (nodes == null) {
|
|
return null;
|
|
}
|
|
List<Tree<T>> topNodes = new ArrayList<Tree<T>>();
|
|
|
|
for (Tree<T> children : nodes) {
|
|
|
|
String pid = children.getParentId();
|
|
if (pid == null || "0".equals(pid)) {
|
|
topNodes.add(children);
|
|
|
|
continue;
|
|
}
|
|
|
|
for (Tree<T> parent : nodes) {
|
|
String id = parent.getId();
|
|
if (id != null && id.equals(pid)) {
|
|
parent.getChildren().add(children);
|
|
children.setHasParent(true);
|
|
parent.setChildren(true);
|
|
continue;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
Tree<T> root = new Tree<T>();
|
|
if (topNodes.size() == 1) {
|
|
root = topNodes.get(0);
|
|
} else {
|
|
root.setId("-1");
|
|
root.setParentId("");
|
|
root.setHasParent(false);
|
|
root.setChildren(true);
|
|
root.setChecked(true);
|
|
root.setChildren(topNodes);
|
|
root.setText("顶级节点");
|
|
Map<String, Object> state = new HashMap<>(16);
|
|
state.put("opened", true);
|
|
root.setState(state);
|
|
}
|
|
|
|
return root;
|
|
}
|
|
|
|
public static <T> List<Tree<T>> buildList(List<Tree<T>> nodes, String idParam) {
|
|
if (nodes == null) {
|
|
return null;
|
|
}
|
|
List<Tree<T>> topNodes = new ArrayList<Tree<T>>();
|
|
|
|
for (Tree<T> children : nodes) {
|
|
|
|
String pid = children.getParentId();
|
|
if (pid == null || idParam.equals(pid)) {
|
|
topNodes.add(children);
|
|
|
|
continue;
|
|
}
|
|
|
|
for (Tree<T> parent : nodes) {
|
|
String id = parent.getId();
|
|
if (id != null && id.equals(pid)) {
|
|
parent.getChildren().add(children);
|
|
children.setHasParent(true);
|
|
parent.setChildren(true);
|
|
|
|
continue;
|
|
}
|
|
}
|
|
|
|
}
|
|
return topNodes;
|
|
}
|
|
|
|
} |