实现一个队列,当尝试向队列中添加新元素并且它已满时,会自动从其头部驱逐一个元素。我们以仅追加方式插入元素的环。如果我们想要添加新元素的位置上有一个元素,我们只是覆盖给定位置的现有元素。
package learn;
import java.util.LinkedList;
public class Test {
public static void main(String[] args) {
LimitedQueue<String> limitedQueue = new LimitedQueue<>(2);
limitedQueue.add("1");
limitedQueue.add("2");
limitedQueue.add("3");
System.out.println(limitedQueue);
// [2, 3]
}
}
class LimitedQueue<E> extends LinkedList<E> {
private static final long serialVersionUID = 1L;
private final int size;
public LimitedQueue(int size) {
this.size = size;
}
@Override
public boolean add(E o) {
super.add(o);
while (size() > size) {
super.remove();
}
return true;
}
}