Как использовать 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();