如何使用Guava Cache和ArrayList的到期时间?

时间:2017-08-26 17:42:28

标签: java arraylist google-guava-cache

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

有没有办法为ArrayList使用guava缓存?

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

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

1 个答案:

答案 0 :(得分:2)

  

有没有办法为ArrayList使用guava缓存?

Guava Cache旨在通过密钥进行查询。但是,您可以使用ArrayList的索引作为键,或者选择对象的某些唯一属性作为键(尽管据我所知,您需要按照添加的顺序存储值)。 / p>

  

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

是的,在构建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();