我有一个带有大量条目的散列图,它是序列化的。如果我在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?
答案 0 :(得分:1)
AFAIK,您无法使用简单的java序列化进行增量保存 您应该使用另一个系统来存储数据(例如数据库)。
也许它有点过分,但是NoSQL数据库(例如cassandra)比尝试创建自己的系统更简单。
答案 1 :(得分:1)
使用DB
或简单File IO
维护到您之前编写的位置。