我使用ObjectOutputStream的writeObject方法来序列化树。树的数据类型是通用的,可以是整数以及复杂的“Student”对象。但我需要'标记'一个空指针,一个指针,我将用它来标记离开节点。 例如:
if (node.item == null) {
oos.writeObject('SOMEMARKER');
return;
}
我的问题是标记空的最便宜(空间明智)方式是什么? EG:使用布尔值?
例如:oos.writeObject(true
)?
答案 0 :(得分:3)
标记null
的最简单方法是使用null。
oos.writeObject(null);
您可以使用布尔值进行标记,但writeObject(true)
使用的空间不仅仅是传递null
。
if (node.item == null) {
oos.writeByte(0);
} else {
oos.writeByte(1);
oos.writeObject(note.item);
}
// to read
Item item = ois.readByte() == 0 ? null : (Item) ois.readObject();
但是,由于你使用的Java Serailization效率非常低,所以我不会担心它并保持简单。
oos.writeObject(item.node);
// to read
Item item = (Item) ois.readObject();