0

我正在重写类的 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);
    }
}

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

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

任何帮助将不胜感激!

4

0 回答 0