一尘不染

是否有固定大小的队列来删除多余的元素?

java

我需要一个固定大小的队列。当我添加一个元素并且队列已满时,它应该自动删除最旧的元素。

Java中是否有为此实现的现有实现?


阅读 343

收藏
2020-03-22

共2个答案

一尘不染

从我自己的带有正确答案的重复问题中,我学到了两个:

  • EvictingQueue在Google Guava中
  • CircularFifoQueue在Apache Commons中
    我有效利用了Guava EvictingQueue,效果很好。
2020-03-22
一尘不染

实际上,LinkedHashMap完全可以满足你的需求。你需要重写该removeEldestEntry方法。

最多包含10个元素的队列的示例:

  queue = new LinkedHashMap<Integer, String>()
  {
     @Override
     protected boolean removeEldestEntry(Map.Entry<Integer, String> eldest)
     {
        return this.size() > 10;   
     }
  };

如果“ removeEldestEntry”返回true,则将最旧的条目从地图中删除。

2020-03-22