Cola de implementación de Java (se puede expandir automáticamente)
Primero declara la interfaz de la interfaz Cola<E>
//适用泛型
public interface Queue<E> {
int getSize();
boolean isEmpty();
void enqueue(E e);//入队
E dequeue();//出队
E getFront();//获得队首元素
}
La clase ArrayQueue <E>
implementa la interfaz, y la prueba también se incluye
Aquí se consigue a través de interfaces de auto-cola definida en los métodos de la clase Array, así la formación de la clase ArrayQueue
clase Array de encargo: punto I salto
/**
* @author yinglongwu
*/
//这里通过自定义的Array类实现Queue接口,进而形成这个ArrayQueue,
//并且也可以自动扩容
public class ArrayQueue<E> implements Queue<E> {
private Array<E> array;
public ArrayQueue(int capacity){
array = new Array<E>(capacity);
}
public ArrayQueue() {
array = new Array<E>();//使用Array类里的无参构造
}
//获取队列的最大容量
public int getCapacity() {
return array.getCapacity();
}
//对接口中的方法进行重写
@Override
public int getSize() {
return array.getSize();
}
@Override
public boolean isEmpty() {
return array.isEmpty();
}
@Override
public void enqueue(E e) {//入队
array.addLast(e);
}
@Override
public E dequeue() {//出队
return array.removeFirst();
}
@Override
public E getFront() {//查看队首元素
return array.getFirst();
}
//对toString方法进行重写,方便输出队列的基本信息
@Override
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();
}
//测试 ArrayQueue
public static void main(String[] args) {
ArrayQueue<Integer> queue = new ArrayQueue<Integer>();
//包装类和其对应的基本数据类型可以自动转换
for (int i = 0; i < 10; i++) {
queue.enqueue(i);//入队
System.out.println(queue);
if (i%3==2) {//每三个元素出队一次
queue.dequeue();
System.out.println(queue);
}
}
}
}
Resultado de salida