我正在编写一个程序,从硬盘中读取大量数据并根据这些数据创建一个散列图,然后我做了一些处理,稍微更改了这个初始的hashmap。我的问题,每次运行程序时,我都会从相同的数据中创建相同的hashmap(让我们称之为初始的hashmap)。只有处理因运行而异。无论如何,我可以创建一次这个hashmap并持久保存吗?序列化有帮助吗?
答案 0 :(得分:3)
这是一个众所周知的问题,有很多解决方案,其中我建议两个: 1.将散列映射保存在sql数据库表中,主键列包含键值,另一列包含相应的值; 2.使用nosql数据存储,其中有很多,其中包括Redis或SimpleDb。
答案 1 :(得分:2)
由于HashMap是Serializable,我将使用这种方式来保存它:
public void saveStatus(Serializable object){
try {
FileOutputStream saveFile = new FileOutputStream("current.dat");
ObjectOutputStream out = new ObjectOutputStream(saveFile);
out.writeObject(object);
out.close();
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
要恢复你的对象,就这样做:
public Object loadStatus(){
Object result = null;
try {
FileInputStream saveFile = new FileInputStream("current.dat");
ObjectInputStream in = new ObjectInputStream(saveFile);
result = in.readObject();
in.close();
fileIn.close();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
然后你可以将这个方法返回的对象转换为HashMap并继续在同一个地方。
答案 2 :(得分:-2)
这里也提出了类似的问题;我推荐谷歌搜索:
java persistent hash table
话虽如此,您可以手动将键值对保存到文件或数据库,并在启动时重建哈希值。