队列是一种简单的数据结构,与栈的典型特点后入先出(LIFO)相对应,它的典型特点是先入先出(FIFO)。队列至少应包括两个基本的方法,就是入队列和出队列,另外,其基本方法如下:
- add(E e) 在队列的队尾添加对象
- remove() 从队首删除一个对象,出队列
- peek() 查看队列的队首元素
简单队列示例:
public class Queue<E> {
private int front;
private int rear;
private static final int DEFAULT_SIZE = 10;
private Object[] queue;
private int size;
public Queue() {
queue = new Object[DEFAULT_SIZE];
size = 0;
front = 0;
rear = -1;
}
public Queue(int initSize) {
queue = new Object[initSize];
size = 0;
front = 0;
rear = -1;
}
/**
* 入队操作
*
* @param e
* 待插入队列的对象
* @return 插入成功返回true,否则返回false
*/
public boolean add(E e) {
if (isFull()) {
return false;
}
if (rear == queue.length - 1) {
rear = -1;
}
queue[++rear] = e;
size++;
return true;
}
/**
* 出队操作
*
* @return
*/
public E remove() {
if (isEmpty()) {
return null;
}
E temp = peek();
if (front == queue.length - 1) {
front = 0;
}
queue[front++] = null;
size--;
return temp;
}
/**
* 查看队列的对头对象
*
* @return
*/
public E peek() {
if (size() > 0) {
return (E) queue[front];
}
return null;
}
public int size() {
return this.size;
}
public boolean isEmpty() {
return size == 0;
}
public boolean isFull() {
return size == queue.length;
}
Java API中的Queue是一个接口,常用的类LinkedList间接实现了该接口。