我正在覆盖用于序列化的类的writeObject方法。 该类是基于列表的类。 对于列表中的节点包含相同键的情况,我需要使其内存有效。 因此,不要发送多个相同的密钥,而是通过对相同密钥的引用发送。
我的基本目标是确保我不会写出重复的密钥。如果有重复的密钥,我想确保我只发送一次密钥,然后只发送对它的引用。
@SuppressWarnings("rawtypes")
private void writeObject(java.io.ObjectOutputStream out){
try{ // Attempt to write data out
out.writeInt(size); // size is number of Nodes in list
ArrayList<Node> reverse = new ArrayList<Node>();
// Reverse the order to write out so readObject builds correctly
for(Node c = head; c != null; c = c.next)
reverse.add(0, c);
for(Node c: reverse){ // Break down objects and write out
out.writeObject(c.key);
out.writeObject(c.val);
}
} // Catch any exceptions
catch(IOException e){
System.out.println("seriallist writeobject");
System.out.println(e);
}
}
这是我为序列化数据而正常工作的代码。我试图列出所有唯一键并尝试让每个节点引用其中一个键,但是当我写出来时,我无法将文件大小降低。
同样理想情况下,我想在此方法中进行引用,因此我只需要在写出之前担心这样做,而不是在添加/删除过程中保留它们。
非常感谢任何帮助!