我需要一个固定大小的队列。当我添加一个元素并且队列已满时,它应该自动删除最旧的元素。
Java中是否有为此实现的现有实现?
从我自己的带有正确答案的重复问题中,我学到了两个:
EvictingQueue
CircularFifoQueue
实际上,LinkedHashMap完全可以满足你的需求。你需要重写该removeEldestEntry方法。
最多包含10个元素的队列的示例:
queue = new LinkedHashMap<Integer, String>() { @Override protected boolean removeEldestEntry(Map.Entry<Integer, String> eldest) { return this.size() > 10; } };
如果“ removeEldestEntry”返回true,则将最旧的条目从地图中删除。