Как использовать Guava Cache со временем истечения для ArrayList?

Я только что узнал о Guava Caching, и все примеры, которые я вижу, используют map, key и value.

Есть ли способ использовать кеш Guava для ArrayList?

У меня есть ArrayList, в котором есть элементы, каждый элемент имеет 60 секунд для жизни, после этого он должен быть удален, я ценю любые предложения.

И можно ли вызвать метод после удаления каждого элемента? Например, если число удаляется из списка, мне нужно снова пересчитать среднее.

1 ответ

Решение

Есть ли способ использовать кеш Guava для 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();
Другие вопросы по тегам