将哈希表保存在持久存储中

时间:2012-11-14 19:13:21

标签: java hashtable persistent-storage

我正在编写一个程序,从硬盘中读取大量数据并根据这些数据创建一个散列图,然后我做了一些处理,稍微更改了这个初始的hashmap。我的问题,每次运行程序时,我都会从相同的数据中创建相同的hashmap(让我们称之为初始的hashmap)。只有处理因运行而异。无论如何,我可以创建一次这个hashmap并持久保存吗?序列化有帮助吗?

3 个答案:

答案 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

话虽如此,您可以手动将键值对保存到文件或数据库,并在启动时重建哈希值。