【发布时间】:2015-02-09 10:20:15
【问题描述】:
我正在 java 中实现 B Plus Tree。我有一个节点类,我在其中维护对子对象 Nodes 的引用。现在,当我序列化任何节点时,它也会序列化所有子节点。我想要的是仅序列化该节点和对子节点的引用。我尝试将节点对象编写为字节流,但在反序列化时它不起作用。
public class BNode implements Serializable
{
LinkedList<Float> keys;
LinkedList<BNode> childPointers;
BNode parent;
...
}
在 B+ 树中,节点保存在磁盘中,我必须模拟该操作。现在每个页面都是 2 KB(比如说),所以在我的每个节点中,我保存了大约 2044 个字节的数据(255 个浮点值和 256 个节点引用 - 总计 255*4 + 255*4 + 一些其他 10 个字节的数据)模拟单个节点的单个文件。现在,如果我序列化父节点,它将整个树序列化为单个文件,从而破坏了整个目的
【问题讨论】:
-
“对子节点的引用”是什么意思?
-
你的意思是你只需要序列化父母吗?
-
我需要分别序列化每个节点。我的意思是父节点序列化文件不能同时序列化所有引用节点
标签: java serialization deserialization datainputstream dataoutputstream