結果の一部をキャッシュするためにGuavaLoadingCacheを使用しています。 loadメソッドを使用して、他のソースから結果をフェッチし、「put(key,value)
」を使用してキャッシュに入れます。今私が解決しようとしている問題は、キーを渡さずに、そのキャッシュで利用可能なすべての結果を取得したいということです。特定のキーに関係なく、その時点でキャッシュに表示されているすべての値を取得することに関心があるためです。
getall(Iterable<?> keys)
またはgetAllPresent(Iterable<?> keys)
メソッドがありますが、それらはキーが渡されることを期待しています。
_(Loading)Cache#asMap
_ を使用して、返されたConcurrentMap
を表示および操作できます。グアバに素敵な説明があります wikiページ :
Cache
ビューを使用して任意のConcurrentMap
をasMap
として表示できますが、asMap
ビューがCache
とどのように相互作用するかについては説明が必要です。 。
cache.asMap()
には、現在キャッシュにロードされているすべてのエントリが含まれます。したがって、たとえば、cache.asMap().keySet()
には現在ロードされているすべてのキーが含まれます。