我正在编写一个程序,它从硬盘读取大量数据并根据这些数据创建一个哈希图,然后我做一些处理来稍微改变这个初始哈希图。我的问题是,每次我运行我的程序时,我都会从相同的数据创建相同的哈希图(我们称之为初始哈希图)。只有处理与一次运行不同。无论如何,我可以创建一次这个哈希图并永久保存它吗?序列化会有帮助吗?
问问题
3157 次
3 回答
3
这是一个众所周知的问题,有很多解决方案,其中我建议两个:1.将hashmap保存在一个sql数据库表中,主键列包含键值,另一列包含相应的值;2. 使用 nosql 数据存储,其中有很多,其中包括 Redis 或 SimpleDb。
于 2012-11-14T19:25:38.910 回答
2
由于 HashMap 是可序列化的,我将使用这种方式来保存它:
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 并在同一位置继续。
于 2012-11-14T19:25:34.990 回答
-2
类似的问题已经在这里提出过;我推荐谷歌搜索:
java persistent hash table
话虽如此,您可以手动将键值对保存到文件或数据库中,并在启动时重建哈希。
于 2012-11-14T19:18:15.257 回答