7

私は、100,000を超えるキーを持つことができるいくつかのマップを使用するプロジェクトに取り組んでいます。現在、時間を節約するためにデータの省略形を使用して各実行時にマップを作成しているため、マップには約1,000個のキーしかありません。しかし、私が利用できるデータの全範囲でテストしたいと思います。

クラスでマップを作成し、そのオブジェクトをハードドライブに保存して、さまざまなクラスでそのオブジェクトを参照できるようにすると、テストするたびにマップを作成して塗りつぶす必要がなくなります。クラス。私はEclipseを使用してJavaでクラスを書いています。

編集:オブジェクトのシリアル化と呼ばれていると思いますが、シリアル化されている場合は、使用する前にマップ全体を読み取る必要がありますか?それとも、ローカル変数を呼び出すのと実質的に同じでしょうか?

4

3 に答える 3

1

私も同様の問題を抱えていました。最初にHSQLDBを使用しました。その後、EHCacheをチェックしました。そしてそれは違いを生みます-より速く動作し、理解しやすくなります。

NOSQLページの「KeyValue/TupleStore」の段落もご覧ください。きっとあなたはあなたのために何かを見つけるでしょう。

于 2013-03-11T15:18:02.737 に答える
1

マップにシリアル化可能なオブジェクトが含まれている場合は、シリアル化を使用してマップをディスクに直接書き込むことができます。例: 文字列、整数のマップ

ただし、作成したカスタム クラスがマップに含まれている場合は、Serializable インターフェイスを実装してクラスをシリアライズ可能にする必要があります。

クラスの内容を書き込む場合は writeObject(ObjectOutputStream s) をオーバーライドし、クラスの内容を読み戻す場合は readObject(ObjectInputStream ois) をオーバーライドすることで、シリアライゼーションを使用してクラスをディスクに書き込む方法を明示的に決定できます。

これらのメソッド、つまり writeObject() と readObject() は、シリアライゼーションとデシリアライゼーションが行われるときに暗黙的に呼び出されます。これらのメソッドを実装するときは注意してください。要素を書き込むのと同じ順序で読み戻す必要があるためです。

これらのメソッドを実装する方法のサンプル例 :サンプル例

于 2013-03-11T16:30:38.787 に答える
0

少し前に同様の問題に直面しました。私はBerkeley DBを使用しましたが、完璧にフィットしました。あなたが私に尋ねるなら、それは良い代替手段です: http://docs.oracle.com/cd/E17277_02/html/GettingStartedGuide/index.html

于 2013-03-11T16:37:40.920 に答える