是否有固定大小的队列可以删除过多的元素?是,两个
我需要一个大小固定的队列。当我添加一个元素并且队列已满时,它应该自动删除最旧的元素。
在Java中是否有现有的实现?
我需要一个大小固定的队列。当我添加一个元素并且队列已满时,它应该自动删除最旧的元素。
在Java中是否有现有的实现?
实际上,LinkedHashMap完全符合您的要求。您需要重写该方法。removeEldestEntry
最多包含 10 个元素的队列示例:
queue = new LinkedHashMap<Integer, String>()
{
@Override
protected boolean removeEldestEntry(Map.Entry<Integer, String> eldest)
{
return this.size() > 10;
}
};
如果“removeEldestEntry”返回 true,则从映射中删除最旧的条目。
我有效地利用了番石榴,效果很好。EvictingQueue
若要实例化调用,静态工厂方法创建
并指定最大大小。EvictingQueue
EvictingQueue< Person > people = com.google.common.collect.EvictingQueue.create( 100 ) ; // Set maximum size to 100.