【问题标题】:Saving a hashtable in a persistent storage将哈希表保存在持久存储中
【发布时间】:2012-11-15 03:25:38
【问题描述】:

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

【问题讨论】:

    标签: java hashtable persistent-storage


    【解决方案1】:

    这是一个众所周知的问题,有很多解决方案,其中我建议两个: 1.将hashmap保存在sql数据库表中,主键列包含键值,另一列包含对应值; 2. 使用 nosql 数据存储,其中有很多,其中包括 Redis 或 SimpleDb。

    【讨论】:

      【解决方案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 并在同一个地方继续。

      【讨论】:

        【解决方案3】:

        此处已提出类似问题;我推荐谷歌搜索:

        java persistent hash table
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-16
          • 2023-03-22
          • 1970-01-01
          • 2017-05-11
          • 2017-01-22
          • 2015-05-26
          相关资源
          最近更新 更多