LimitQueue固定长度的队列

27 篇文章 4 订阅

在开发过程中,有时会有这样的需求,一个固定长度的集合里,当收到新的数据时自动丢掉最旧的数据这样的队列结构。

其实实现并不难,即一个队列结构的集合,在推送新数据时判断一下,当集合大小已经达到限制长度时自动丢掉最旧的数据。

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接口,用起来比较方便



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值