队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。
Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接 口。
Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用。
BlockingQueue 继承了Queue接口,用于处理多线程协同工作的情况。
我们这里只记录最简单的java.util.Queue接口,该接口暴露的方法,根据其出错时候的行为,可以分为两组,抛出异常型和返回特殊值型
出错抛出异常型 | 出错返回特殊值型 | |
插入(返回值为true或false) | add(e) | offer(e) |
移除(返回值为移除的元素) | remove() | poll() |
检查(返回值为获取的元素) | element() | peek() |
下面我们做个例子来学习一下:
import java.util.LinkedList; import java.util.Queue; class node { node(int xparam,int yparam,int valparam) { this.x = xparam;this.y = yparam;this.value = valparam; } int x,y,value; public String toString() { return new StringBuilder("(") .append(this.x).append(",") .append(this.y).append(",") .append(this.value).append(")") .toString(); } } public class JavaQueue { public static void main(String[] args) { Queue<node> queue=new LinkedList<node>(); for(int i=0;i<10;i++) { queue.offer(new node(i,i,i*i));//入队 } for(int j=0;j<10;j++) { System.out.println(queue.poll());//出队,按照先后顺序 } System.out.println(queue.isEmpty());//队列现在为empty } }