java构建树形菜单代码
时间: 2023-05-24 07:00:57 浏览: 74
好的,以下是一个简单的Java构建树形菜单的代码样例:
```
public class TreeNode {
private long id; // 节点ID
private long parentId; // 父节点ID
private String name; // 节点名称
private List<TreeNode> children; // 子节点列表
public TreeNode(long id, long parentId, String name) {
this.id = id;
this.parentId = parentId;
this.name = name;
this.children = new ArrayList<>();
}
// 添加子节点
public void addChild(TreeNode child) {
children.add(child);
}
// 构建树
public static List<TreeNode> buildTree(List<TreeNode> nodeList) {
List<TreeNode> treeList = new ArrayList<>();
// 遍历查找根节点
for (TreeNode node : nodeList) {
if (node.parentId == 0) {
treeList.add(node);
}
}
// 递归构建子节点
for (TreeNode parentNode : treeList) {
buildChildren(parentNode, nodeList);
}
return treeList;
}
// 构建子节点
private static void buildChildren(TreeNode parentNode, List<TreeNode> nodeList) {
for (TreeNode node : nodeList) {
if (node.parentId == parentNode.id) {
parentNode.addChild(node);
buildChildren(node, nodeList);
}
}
}
// getter/setter方法
// ...
}
// 测试代码
public static void main(String[] args) {
// 构建样例节点列表
List<TreeNode> nodeList = new ArrayList<>();
nodeList.add(new TreeNode(1, 0, "A"));
nodeList.add(new TreeNode(2, 0, "B"));
nodeList.add(new TreeNode(3, 1, "A1"));
nodeList.add(new TreeNode(4, 1, "A2"));
nodeList.add(new TreeNode(5, 2, "B1"));
nodeList.add(new TreeNode(6, 4, "A21"));
nodeList.add(new TreeNode(7, 5, "B11"));
// 构建树形结构
List<TreeNode> treeList = TreeNode.buildTree(nodeList);
// 输出
for (TreeNode node : treeList) {
printNode(node, 0);
}
}
// 打印节点
private static void printNode(TreeNode node, int depth) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < depth; i++) {
sb.append("\t");
}
sb.append(node.name);
System.out.println(sb.toString());
for (TreeNode child : node.children) {
printNode(child, depth + 1);
}
}
```
这段代码可以通过定义 `TreeNode` 类表示树节点,通过 `buildTree()` 方法构建整个树形结构,具体实现时需要先遍历节点数组,找到所有的根节点,然后递归地查找并添加子节点。最后可以根据树形结构进行相关操作,例如通过递归打印节点信息。