web-dev-qa-db-ja.com

キーを渡さずにguavaLoadingCacheからすべての値を取得する方法

結果の一部をキャッシュするためにGuavaLoadingCacheを使用しています。 loadメソッドを使用して、他のソースから結果をフェッチし、「put(key,value)」を使用してキャッシュに入れます。今私が解決しようとしている問題は、キーを渡さずに、そのキャッシュで利用可能なすべての結果を取得したいということです。特定のキーに関係なく、その時点でキャッシュに表示されているすべての値を取得することに関心があるためです。

getall(Iterable<?> keys)またはgetAllPresent(Iterable<?> keys)メソッドがありますが、それらはキーが渡されることを期待しています。

8
Dave

_(Loading)Cache#asMap_ を使用して、返されたConcurrentMapを表示および操作できます。グアバに素敵な説明があります wikiページ

Cacheビューを使用して任意のConcurrentMapasMapとして表示できますが、asMapビューがCacheとどのように相互作用するかについては説明が必要です。 。

  • cache.asMap()には、現在キャッシュにロードされているすべてのエントリが含まれます。したがって、たとえば、cache.asMap().keySet()には現在ロードされているすべてのキーが含まれます。
9
Xaerxess