我正在重写类的 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);
}
}
这是我为序列化数据而正确工作的代码。我试图列出所有唯一键,并试图让每个节点引用其中一个键,但是当我写出时我无法减小文件大小。
理想情况下,我想在此方法中进行引用,因此我只需要在写出之前担心这样做,而不是在添加/删除期间维护它们。
任何帮助将不胜感激!