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