2

ハードディスクから大量のデータを読み取り、このデータからハッシュマップを作成するプログラムを作成しています。次に、この初期ハッシュマップを少し変更する処理を実行します。私の問題は、プログラムを実行するたびに、同じデータから同じハッシュマップを作成することです(これを初期ハッシュマップと呼びましょう)。処理は、実行ごとに異なります。とにかく、このハッシュマップを一度作成して永続的に保存することはできますか?シリアル化は役立ちますか?

4

3 に答える 3

3

これはよく知られている問題であり、多くの解決策があります。そのうちの2つをお勧めします。1。キー値を含む主キー列と対応する値を含む別の列を含む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 に答える