【问题标题】:How to get all values from guava LoadingCache without passing any keys如何在不传递任何键的情况下从 guava LoadingCache 获取所有值
【发布时间】:2018-03-10 03:15:32
【问题描述】:

我正在使用 Guava LoadingCache 来缓存一些结果。使用加载方法,我从其他来源获取结果并使用“put(key,value)”放入缓存。 现在我要解决的问题是:我想在不传递任何键的情况下获取该缓存中的所有可用结果。因为我有兴趣获取当时缓存中出现的所有值,而不考虑任何特定的键。

getall(Iterable<?> keys)getAllPresent(Iterable<?> keys) 方法已经存在,但它们希望传递密钥。

【问题讨论】:

    标签: java caching guava


    【解决方案1】:

    您可以使用(Loading)Cache#asMap 查看并操作返回的ConcurrentMap。 Guava 上有很好的描述wiki page:

    您可以使用asMap 视图将任何Cache 视为ConcurrentMap,但是 asMap 视图如何与 Cache 交互需要一些解释。

    • cache.asMap() 包含当前加载的所有条目 缓存。因此,例如,cache.asMap().keySet() 包含所有 当前加载的密钥。

    【讨论】:

    • 我们可以在 LoadingCache 上检查 isempty() 或类似的东西吗?在访问其元素之前。
    • LoadingCache,顾名思义,如果值丢失或已被驱逐,则加载(计算)该值,因此在访问之前无需检查任何内容(如果您确实需要区分空 value,你可以随时使用Cache#getIfPresent(K)
    猜你喜欢
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    相关资源
    最近更新 更多