1

我刚刚发现了 Guava Caching,我看到的所有示例都是使用 map、key 和 value。

有没有办法将番石榴缓存用于 ArrayList?

我有一个包含元素的 ArrayList,每个元素有 60 秒的生存时间,之后它应该被删除,我很感激任何建议。

是否可以在删除每个元素后触发方法?例如,如果从列表中删除了一个数字,我需要再次重新计算平均值。

4

1 回答 1

2

有没有办法将番石榴缓存用于 ArrayList?

Guava Cache 设计为按键查询。但是,您可以使用您的索引ArrayList作为键或选择对象的某些唯一属性作为键(尽管据我了解,您需要按添加顺序存储值)。

是否可以在删除每个元素后触发方法?

是的,在构建您的Cache<K, V>, 设置时RemovalListener<K,V>

例如:

Cache<String, String> cache = CacheBuilder.newBuilder()
    .expireAfterWrite(60, TimeUnit.SECONDS)
    .removalListener(new RemovalListener<String, String>() {
      public void onRemoval(RemovalNotification<String, String> removal) {
        // Compute the average here
      }          
    })
    .build();
于 2017-08-26T17:53:56.443 回答