在开发过程中,有时会有这样的需求,一个固定长度的集合里,当收到新的数据时自动丢掉最旧的数据这样的队列结构。
其实实现并不难,即一个队列结构的集合,在推送新数据时判断一下,当集合大小已经达到限制长度时自动丢掉最旧的数据。
import java.util.LinkedList;
public class LimitQueue<E>{
private int limit; // 队列长度
private LinkedList<E> queue = new LinkedList<E>();
public LimitQueue(int limit){
this.limit = limit;
}
/**
* 入列:当队列大小已满时,把队头的元素poll掉
*/
public void offer(E e){
if(queue.size() >= limit){
queue.poll();
}
queue.offer(e);
}
public E get(int position) {
return queue.get(position);
}
public E getLast() {
return queue.getLast();
}
public E getFirst() {
return queue.getFirst();
}
public int getLimit() {
return limit;
}
public int size() {
return queue.size();
}
}
其中,LinkedList已经实现了Queue接口,用起来比较方便