5

オブジェクトを格納する標準の LRUCache を Android に実装しました。各キーは、格納されたオブジェクトに関連付けられた一意の ObjectId です。私の問題は、キャッシュからオブジェクトを取得する唯一の方法は、ObjectId (イテレータなし) によるものであることです。getAll() メソッドを実装する最良の方法は何ですか? もう 1 つのオプションは、すべての ObjectId をリストのどこかに格納することです。これにより、リストを反復処理してすべてのオブジェクトを取得できますが、すべての ObjectId を保持する最良の方法は何でしょうか?

ありがとう!

4

3 に答える 3

7

LruCacheAndroid が提供するを使用 (または拡張) している場合snapshot、キー (ObjectIds) と値 (Objects) のマップを返すメソッドがあります。次のようなことができます。

Map<ObjectIds, Object> snapshot = lruCache.snapshot();
for (ObjectIds id : snapshot.keySet()) {
  Object myObject = lruCache.get(id);
}

Android の を使用していない場合はLruCache、実装に依存すると思います。(提供されたものをサブクラス化するのではなく、独自のものを実装する動機となった理由も知りたいです!)

于 2015-02-26T04:55:44.287 に答える