Java更新数据结构更改为序列化文件

时间:2010-10-05 07:13:57

标签: java serialization

我有一个带有大量条目的散列图,它是序列化的。如果我在hashmap中进行一些小改动,是否需要完全覆盖旧文件或者是否有替代方法?

public class HashMapSerial {
public static void main(String[] args) {
    HashMap<String,Integer> hash=new HashMap<String, Integer>(100000);
    hash.put("hello",1 );
    hash.put("world", 2);
    //+ (100000 -2) entry's


    ObjectOutputStream s=new ObjectOutputStream(new FileOutputStream(new File("hash.out")));
    s.writeObject(hash); // write the hash map to file


    hash.put("hello",10);
    s.writeObject(hash); //rewrite the whole hashmap again
}
}

由于更改仅针对字符串“hello”,并且没有其他元素可以仅为字符串“hello”更新序列化文件,而不是再次重写整个hashmap?

2 个答案:

答案 0 :(得分:1)

AFAIK,您无法使用简单的java序列化进行增量保存 您应该使用另一个系统来存储数据(例如数据库)。

也许它有点过分,但是NoSQL数据库(例如cassandra)比尝试创建自己的系统更简单。

答案 1 :(得分:1)

使用DB或简单File IO维护到您之前编写的位置。