2

我正在编写一个程序,它从硬盘读取大量数据并根据这些数据创建一个哈希图,然后我做一些处理来稍微改变这个初始哈希图。我的问题是,每次我运行我的程序时,我都会从相同的数据创建相同的哈希图(我们称之为初始哈希图)。只有处理与一次运行不同。无论如何,我可以创建一次这个哈希图并永久保存它吗?序列化会有帮助吗?

4

3 回答 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 回答