【问题标题】:Is there a Java collection which removes items as more items are added? (a simple cache) [duplicate]是否有一个 Java 集合可以在添加更多项目时删除项目? (一个简单的缓存)[重复]
【发布时间】:2014-03-08 22:24:36
【问题描述】:

我需要一个简单的缓存机制。

我想保留最近添加的 100 个最新项目,但不超过该限制。当我添加另一个项目时,我希望集合自动删除第 101 个项目。想象一下将 LifeSaver 糖果推过管子——当我在管子的一端添加另一颗糖果时,另一端会掉出另一颗糖果。

自己写会很简单。我的“添加”方法会在执行“添加”之前首先删除最旧的项目。我只是想知道是否已经写了这样的类。

我查看了捆绑的 Collection 类、List、Queue 等。我也看了Google Guava。但似乎没有一个有这个简单的功能。

这对谷歌来说是一个困难的话题,因为我不知道这种行为的行话。

【问题讨论】:

标签: java collections


【解决方案1】:

Apache Commons – CircularFifoQueue

CircularFifoQueue 是一个具有固定大小的先进先出队列,如果已满则替换其最旧的元素。

我想这就是您正在寻找的行为。它来自 Apache 公共集合 (link)

【讨论】:

  • 感谢您的正确回答。使用该类名,我发现 Google Guava 版本 15(大约 2013-10 年)获得了具有类似行为的 EvictingQueue(好名字!)类。见文章,Guava 15 – New features。
猜你喜欢
  • 2019-07-12
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2015-07-05
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
  • 2014-09-07
相关资源
最近更新 更多