实现一个固定长度的集合队列

在开发中,有时候我们会遇到这样的需求:

对一个集合操作,提前为集合指定最大大小,在我们不断向集合中添加数据的时候,当数据内容超过最大值的时候,自动将最先入队的元素移除队列。

实现方法很简单,代码如下

package com.test.limitqueue;import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Queue;/*** 实现一个固定长度的集合队列** @author SHANHY(365384722@QQ.COM)* @date   2015年11月9日* @param */
public class LimitQueue implements Queue {/*** 队列长度,实例化类的时候指定 */private int limit;  Queue queue = new LinkedList();  public LimitQueue(int limit){  this.limit = limit;  }  /*** 入队*/@Override  public boolean offer(E e){  if(queue.size() >= limit){  //如果超出长度,入队时,先出队  queue.poll();  }return queue.offer(e);  }  /*** 出队 */@Override  public E poll() {  return queue.poll();  }  /*** 获取队列 * * @return* @author SHANHY* @date   2015年11月9日*/public Queue getQueue(){  return queue;  }  /*** 获取限制大小* * @return* @author SHANHY* @date   2015年11月9日*/public int getLimit(){  return limit;  }  @Override  public boolean add(E e) {  return queue.add(e);  }  @Override  public E element() {  return queue.element();  }  @Override  public E peek() {  return queue.peek();  }  @Override  public boolean isEmpty() {  return queue.size() == 0 ? true : false;  }  @Override  public int size() {  return queue.size();  }  @Override  public E remove() {  return queue.remove();  }  @Override  public boolean addAll(Collection c) {  return queue.addAll(c);  }  @Override  public void clear() {  queue.clear();  }  @Override  public boolean contains(Object o) {  return queue.contains(o);  }  @Override  public boolean containsAll(Collection c) {  return queue.containsAll(c);  }  @Override  public Iterator iterator() {  return queue.iterator();  }  @Override  public boolean remove(Object o) {  return queue.remove(o);  }  @Override  public boolean removeAll(Collection c) {  return queue.removeAll(c);  }  @Override  public boolean retainAll(Collection c) {  return queue.retainAll(c);  }  @Override  public Object[] toArray() {  return queue.toArray();  }  @Override  public  T[] toArray(T[] a) {  return queue.toArray(a);  }  
}

package com.test.limitqueue;/*** 测试** @author SHANHY(365384722@QQ.COM)* @date   2015年11月9日*/
public class TestQueue {public static void main(String[] args) {LimitQueue list = new LimitQueue(4);list.offer("SHANHY");System.out.println(list.size());list.offer("SHANHY");System.out.println(list.size());list.offer("SHANHY");System.out.println(list.size());list.offer("SHANHY");System.out.println(list.size());list.offer("SHANHY");System.out.println(list.size());list.offer("SHANHY");System.out.println(list.size());list.offer("SHANHY");System.out.println(list.size());}}





本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部