2

我希望能够对集合中的对象进行老化。

例如,我可以将字符串放入 HashSet。

  1. 我想要将字符串放入 HashSet 时关联的时间戳。
  2. 我希望从 HashSet 中删除比时间 X 更早的字符串。
  3. 我希望能够说“触摸”一个字符串并将时间更新到它被插入到集合中的时间。

因此,我可以通过跟踪每个字符串来完成此操作,然后运行清理线程并从集合中清除字符串(如果它超过某个时间段)。

但是我正在寻找:

  1. 要么是一种聪明的方式来做到这一点。
  2. 一个现有的开源 Java 组件可以完成此任务。

谢谢。

4

4 回答 4

8

听起来你需要一个缓存。从 Guava 或EhCache尝试CacheBuilder(参见Caches Explained ) 。

于 2012-10-18T20:13:18.083 回答
4

Google Guava缓存可以满足您的所有要求以及更多!请参阅缓存解释

于 2012-10-18T20:12:41.577 回答
1

我会使用JCS,虽然@sjr 真的很喜欢 Guava 的想法

于 2012-10-18T20:13:55.133 回答
1

为什么不创建由 a 支持的您自己的 Collection 类(用于房屋清洁任务)HashMap<String, Date>

于 2012-10-18T20:22:09.580 回答