集合中的老化对象

use*_*468 2 java queue collections priority-queue cache-expiration

我希望能够在Collection中对对象进行老化.

例如,我可以将字符串放在HashSet中.

  1. 我想将字符串放入HashSet时的时间戳关联起来.
  2. 我希望String比从HashSet中删除时间X更早.
  3. 我希望能够说"触摸"一个字符串并更新它在集合中插入的时间.

因此,我可以通过跟踪每个String然后运行清理Thread并从Collection中清除String(如果它早于某个时间量)来完成此操作.

但是我正在寻找:

  1. 这是一个聪明的方式来做到这一点.
  2. 一个现有的开源java组件,它实现了这一点.

谢谢.

Tom*_*icz 8

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


sjr*_*sjr 5

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