Java 从文件读回BST
这是一个令人困惑的问题,所以我道歉,因为我不太清楚该如何表达。基本上我所做的是对二进制搜索树进行排序。在整个程序中,用户向树中添加一条记录,这是一个包含Java 从文件读回BST,java,serialization,Java,Serialization,这是一个令人困惑的问题,所以我道歉,因为我不太清楚该如何表达。基本上我所做的是对二进制搜索树进行排序。在整个程序中,用户向树中添加一条记录,这是一个包含的节点(int studentNumber、String firstName、String lastName、String major、double gpa)。在程序结束时,节点被转换到一个带有自定义节点的LinkedList类I,然后该列表被序列化为一个文件 现在,在启动时,我想基本上将该文件读回另一个列表,显示该列表,然后将其添加回BST,以
的节点(int studentNumber、String firstName、String lastName、String major、double gpa)
。在程序结束时,节点被转换到一个带有自定义节点的LinkedList
类I,然后该列表被序列化为一个文件
现在,在启动时,我想基本上将该文件读回另一个列表,显示该列表,然后将其添加回BST,以便可以以各种方式对其进行排序。我的问题是读取文件中的每一行(节点),并将字段(int studentNumber、String firstName、String lastName、String major、double gpa)
从每个“节点”拉回到树中。到目前为止,我在阅读部分看到了以下内容:
public void loadRecord(LinkedList list) {
File file = new File("records.txt");
try
{
LinkedList<Node> list2;
ObjectInputStream input = new ObjectInputStream(new FileInputStream(file));
list2 = (LinkedList<Node>)input.readObject();
if (list2.size() > 0){
list.addAll(list2);
}//end if
else {
System.out.println("No elements");
}
}
//Catch Exceptions
//display list
}//end loadRecord
公共无效加载记录(LinkedList列表){
File File=新文件(“records.txt”);
尝试
{
链接列表2;
ObjectInputStream输入=新ObjectInputStream(新文件输入流(文件));
list2=(LinkedList)input.readObject();
如果(list2.size()>0){
list.addAll(列表2);
}//如果结束
否则{
System.out.println(“无元素”);
}
}
//捕获异常
//显示列表
}//结束加载记录
再次。。如果这毫无意义,我道歉。很可能我的方向完全错了,所以我很感激任何反馈。请让我知道你的想法 首先,a
链表和二叉搜索树是两种不同的数据结构。你不能把一个和另一个结合起来。
假设您有一个要存储的数字列表。数据以相同的顺序添加到两个结构中。链接列表将类似于:
|5|-->|3|-->|7|-->|2|-->|6|-->|4|-->|8|-->|1|
- “|x |”表示包含存储在其中的数据的x的节点
- 箭头表示节点对其下一个节点的引用
- 数据的顺序与输入方式相同
5
/ \
/ \
3 7
/ \ / \
2 4 6 8
/
1
- 对于每个父节点,都有一个左节点和右节点的引用。左侧子节点中的数据小于父节点中的数据,右侧子节点中的数据大于父节点中的数据李>
record.txt
文件中说明学生信息的排序方式会有所帮助。现在,我假设学生信息的排序方式是将每个学生的数据写在一行中。我将在CustomNode(应该称为student)类中实现一个方法,该方法接收一行,解析它,并将数据存储在student字段中。
然后我将创建一个while循环,创建一个新的student,将当前行添加到student对象的适当方法中,并将student对象添加到树中,只要输入流中有下一行
正如我所说,我需要记录文件中的更多信息来进一步解释。如果你还需要澄清,请告诉我