2016-09-09 1 views
-2

Javaにハッシュマップをエクスポートする方法はありますか?私はあなたを介して1を定義知っJava:HashMapをエクスポートしてインポートする

のHashMapのHMAP =新しいHashMapの();

また、ハッシュマップに情報を取り込んだり挿入する方法の例が見つかりましたが、プログラムの実行中に追加されたデータが一度に実行されるように、「ハッシュマップ」の保存方法はわかりませんプログラムによってアクセスされた別の時間が追加されました。

基本的には、プログラムの実行時に、ユーザー名の後にUserName | Amountという形式の金額を追加します。 そして、プログラムを閉じることができます。 次回プログラムを開くときに、ユーザー名をキーとしてハッシュマップを開き、ユーザーに関連付けられた金額を取得できるようになります。

これは私がこれまでにそれをやって考えてきた唯一の方法ですが、すべての手段でそれをしてください行うためのより良い方法がある場合、私に知らせ:)

感謝を!

+0

一般的に、これは入力時にその情報をファイルまたはデータベースに保存し、次にプログラムが開くたびにファイルまたはデータベースから読み取ることによって行われます。 – Ben

+0

はい、私はこれがこのようになると思いました。これを行う最良の方法は何と思いますか?テキストファイル? –

+0

実際にはユースケースにもよりますが、ほとんどの場合、XML、JSON、CSVなどの構造化されたデータでは簡単になります。これらのフォーマットのそれぞれについていくつかのライブラリを探し、一番簡単なものを選んでください。 Javaでしか動作しない場合、@Midnightasは合理的な解決策を持っているように見えます。 – Ben

答えて

1

データの保存方法は完全に選択してください。
これには、好ましくはjava.util.Propertiesクラスを使用します。あなたはそれの内容にforループ、あなたのHashMapを「保存」してからPropertiesフィールド上setPropertyメソッドを呼び出したいときはいつでも
は:

Properties props = new Properties(); 
props.load(inputStream); // Only call this if your properties file is not empty 
for(Map.Entry<K, V> entry : yourHashMap.entrySet()) { 
    props.setProperty(entry.getKey(), entry.getValue() + ""); 
} 
props.store(outputStream, "Some comment here."); 

私はStringが渡されていることを確認する+ ""を追加しました。
明らかに、"Some comment here."は必要ですが、空にすることはできます。

+0

よろしくお願いいたします。これはどこかのファイルを作成しますか?また、入出力ストリームはどのようなものになりますか? –

+0

'props.store'の' outputStream'は、ファイルに保存する場合は 'FileOutputStream'にすることができます。 – Midnightas

+0

Path outputStream = "/ path/to/wherever"? これをブロックの前に置くと、指定された場所にファイルがエクスポートされますか? –

1

HashMapは、キーと値のペアでデータを格納できるデータ構造です。ハッシュ関数は、キーを均等に分配し、検索を最適化するために使用されます。

キーは何でもかまいませんが、文字列は一般的な選択であり、値は任意のJavaクラスです。

JVM(アプリケーション)を停止すると、データがなくなるので、プログラムを再度実行すると、HashMapを実際に「閉じる」ことはできません。

メモリにあるデータが失われないようにするには、それを維持する必要があります。

  • これをデータベースSQLまたはNoSQLに永続化することができます。
  • CSV、XML、JSON、YAML、TOML、カスタムバイナリ形式などの標準形式で、ファイルにディスクに永続化することができます。 Javaクラスをディスクに直接シリアル化することもできます。
  • 処理または保存する別のサービス、JSONまたはXMLとしてtipicallyシリアル化された別のサービスのために、ネットワーク経由でデータを送信することができます。

ご質問からデスクトップアプリケーションを作成しようとしているようです。 CSVやXMLのようにデータを保存することも、SQLiteのような軽量なSQLデータベースを使用することもできますが、私の場合はMapDBを使用するのが良い方法だと思います。基本的にはHashMapとして使用し、それをディスクに保存し、後でディスクから再度読み取ることができるので、HashMapsでできることを多かれ少なかれ期待できます。

+0

MapDB http://www.mapdb.orgのURL – DrKarl

0

ハッシュマップはSerializableです。これは、HashMapをFileOutputStreamにバックアップしてObjectOutputStreamに書き込んで、ファイルにHashMapを書き込み、後でFileInputStreamを基にしたObjectInputStreamを使用してファイルから読み取ることができることを意味します。それはそれを行う一つの方法であり、Javaプログラミング言語にとって当然のことです。

良いアイデアであるかどうかは、他の人がすでに指摘しているように、ユースケースによって異なります。

HashMapのエンティティも、これが機能するにはシリアライズ可能でなければならないことに注意してください。

関連する問題