是否有固定大小的队列可以删除过多的元素?是,两个

2022-08-31 07:30:19

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

在Java中是否有现有的实现?


答案 1

实际上,LinkedHashMap完全符合您的要求。您需要重写该方法。removeEldestEntry

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

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

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


答案 2

是,两个

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


我有效地利用了番石榴,效果很好。EvictingQueue

若要实例化调用,静态工厂方法创建并指定最大大小。EvictingQueue

EvictingQueue< Person > people = com.google.common.collect.EvictingQueue.create( 100 ) ;  // Set maximum size to 100. 

推荐