0

わかりました。これが私の問題です。ネットからアイテムのリストをダウンロードして、データベースに保存します。連続するダウンロードでは、アイテムが存在しなくなったため、たとえば次のようになります。

最初のダウンロード:item1 item2 item3

2回目のダウンロード:item1 item3

この場合、item2がもう存在しないことを検出する必要があるため、データベースからも削除します。

dbアイテムのリストを管理し、ダウンロードするアイテムごとに「contains」メソッドを呼び出すことを考えました...しかし、これを最も効率的な方法で実行したいので、多くのJava実装のどれかを尋ねています私の問題に最適です。各アイテムには一意のIDがあるため、リストには文字列のみが含まれることに注意してください。

4

3 に答える 3

7

AHashSetは、リストよりもはるかに優れたルックアップパフォーマンスを備えています。
(挿入順序を保持する必要がある場合は、LinkedHashSet代わりに使用してください。)

于 2012-11-09T16:18:53.620 に答える
2

ダウンロードが複数回表示されない場合は、を使用することをお勧めしますHashSet。後でオブジェクトを使用する場合は、それらのオブジェクトがメソッドをオーバーライドすることを確認してhashcodeください。

于 2012-11-09T16:19:51.103 に答える
2

...最も効率的な方法で...

データベースを使用します。

データベースでタイムスタンプを使用してみませんか?

新しいアイテムをダウンロードするときは、おそらくデータベースを更新する必要があります(一部の属性が変更された場合)。そのため、新しくダウンロードしたすべてのアイテムのタイムスタンプを更新することもできます。

その後、タイムスタンプがダウンロードより古いすべてのアイテムをデータベースから削除できます。したがって、完全な新旧のセットをメモリに入れてルックアップを実行する必要はありません。データベースにそれを処理させます(はるかに効率的に実行できます)。

タイムスタンプを保存するオーバーヘッドは最小限であり、ルーチンが実行されるたびに1回インクリメントされる数値のようなものを使用することもできます。

于 2012-11-09T16:32:12.960 に答える