元素超时的Java集合实现
是否存在支持元素过期的集合实现 例如:元素超时的Java集合实现,java,collections,Java,Collections,是否存在支持元素过期的集合实现 例如: Collection<User> cachedUsers = new ExpirableList<User>(10000); 在给定的时间后(在这个特定的示例中为10000ms),添加的元素将从集合中删除。通过使用它,我们将防止我们的cachedUsers集合溢出。您可以通过为TreeMap编写一个包装器来实现这一点,其中插入时间是关键。在每次插入时,您可以删除“超时”的标题列表 不过,使用插入时间作为是否应该删除in的指示似乎不
Collection<User> cachedUsers = new ExpirableList<User>(10000);
在给定的时间后(在这个特定的示例中为
10000ms
),添加的元素将从集合中删除。通过使用它,我们将防止我们的cachedUsers
集合溢出。您可以通过为TreeMap
编写一个包装器来实现这一点,其中插入时间是关键。在每次插入时,您可以删除“超时”的标题列表
不过,使用插入时间作为是否应该删除in的指示似乎不是一个好主意。例如,最好使用一些LRU(最近使用最少的)缓存。例如,这样的缓存在库中很容易获得不要重新发明轮子。
相关问题:
另一种选择是LRU(最近使用最少的)缓存,它在插入新元素时处理最早访问的元素。不清楚您是如何使用该集合的,但Guava's可能会帮助您。另一种选择是:
Map users=ExpiringMap.builder()
.到期时间(10,时间单位。秒)
.build();
看起来您正在寻找。。。缓存:同时提交的插入非常罕见,不是吗?哈哈。说得好。解决方案显然是让每个时间戳映射到一组对象:-)
public ExpirableList(final long timeout){...}
Map<String, User> users = ExpiringMap.builder()
.expiration(10, TimeUnit.SECONDS)
.build();