Java将List年级班级课程转为树形结构
时间: 2023-10-29 07:41:15 浏览: 95
您可以使用递归的方式将List年级、班级和课程转换为树形结构。以下是一个示例的Java代码:
```java
import java.util.ArrayList;
import java.util.List;
class TreeNode {
private String name;
private List<TreeNode> children;
public TreeNode(String name) {
this.name = name;
this.children = new ArrayList<>();
}
public void addChild(TreeNode child) {
this.children.add(child);
}
public String getName() {
return name;
}
public List<TreeNode> getChildren() {
return children;
}
}
class Course {
private String name;
public Course(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public class Main {
public static void main(String[] args) {
// 创建年级、班级和课程列表
List<String> grades = List.of("Grade 1", "Grade 2");
List<String> classes = List.of("Class A", "Class B");
List<String> courses = List.of("Math", "English", "Science");
// 转换为树形结构
TreeNode root = new TreeNode("Root");
for (String grade : grades) {
TreeNode gradeNode = new TreeNode(grade);
for (String clazz : classes) {
TreeNode classNode = new TreeNode(clazz);
for (String course : courses) {
TreeNode courseNode = new TreeNode(course);
classNode.addChild(courseNode);
}
gradeNode.addChild(classNode);
}
root.addChild(gradeNode);
}
// 打印树形结构
printTree(root, 0);
}
private static void printTree(TreeNode node, int level) {
StringBuilder indent = new StringBuilder();
for (int i = 0; i < level; i++) {
indent.append(" ");
}
System.out.println(indent + node.getName());
for (TreeNode child : node.getChildren()) {
printTree(child, level + 1);
}
}
}
```
在上述代码中,我们创建了一个`TreeNode`类来表示树的节点,每个节点有一个名称和一个子节点列表。我们还创建了一个`Course`类来表示课程。
在`Main`类的`main`方法中,我们使用三个列表来表示年级、班级和课程。然后,我们使用嵌套的循环来将它们转换为树形结构。最后,我们使用递归的方式打印出整个树形结构。
注意:这只是一个示例代码,您可以根据自己的需求进行修改和扩展。
阅读全文