在上篇的数组实现类基础下实现队列。
队列就像排队吃饭。先来的先打饭,打完就走。后来的排在队伍后面,当你排到队伍第一个时,就可以打饭走人了。
贴代码
package duilie;
public interface Queue<E> {
int getSize();
boolean isEmpty();
void enqueue(E e);
E dequeue();
E getFront();
}
package duilie;
import shuzu.Array;
public class ArrayQueue<E> implements Queue<E> {
private Array<E> array;
//一直队列大小创建队列
public ArrayQueue(int capacity){
array = new Array<>(capacity);
}
//默认构造队列
public ArrayQueue(){
array = new Array<>();
}
//获得队列长度
public int getSize(){
return array.getSize();
}
//判断队列是否为空
public boolean isEmpty(){
return array.isEmpty();
}
//获得队列大小
public int getCapacity(){
return array.getCapacity();
}
//入队
public void enqueue(E e){
array.addLast(e);
}
//出队
public E dequeue(){
return array.removeFirst();
}
//获得队首元素
public E getFront(){
return array.getFirst();
}
//重写string方法
public String toString(){
StringBuilder res = new StringBuilder();
res.append("Queue:");
res.append("front [ ");
for(int i = 0;i < array.getSize();i++){
res.append(array.get(i));
if(i != array.getSize()-1)
res.append(",");
}
res.append("] tail");
return res.toString();
}
//测试
public static void main(String []arg){
ArrayQueue<Integer> aq = new ArrayQueue<>();
for(int i = 0;i < 10;i++){
aq.enqueue(i);
System.out.println(aq);
if(i % 3 == 2){
aq.dequeue();
System.out.println(aq);
}
}
}
}