Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
元素超时的Java集合实现_Java_Collections - Fatal编程技术网

元素超时的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(最近使用最少的)缓存。例如,这样的缓存在库中很容易获得不要重新发明轮子。

相关问题:


是的,Guava支持带定时过期的缓存。看


另一种选择是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();