Java,序列化,writeObject方法,制作参考

时间:2013-06-21 19:44:16

标签: java performance serialization memory-efficient

我正在覆盖用于序列化的类的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);
    }
}

这是我为序列化数据而正常工作的代码。我试图列出所有唯一键并尝试让每个节点引用其中一个键,但是当我写出来时,我无法将文件大小降低。

同样理想情况下,我想在此方法中进行引用,因此我只需要在写出之前担心这样做,而不是在添加/删除过程中保留它们。

非常感谢任何帮助!

0 个答案:

没有答案