一、定义一个queue的接口
其中包含队列用到的方法;
package p1.接口;
public interface Queue<E> extends Iterable<E> {
public void offer(E element); //入队
public E poll(); //出队
public E peek(); //查看队首元素
public boolean isEmpty();
public void clear();
public int size();
}
二、实现queue接口所定义的方法
(1)因为底层基于ArrayList实现,所以队列的offer()方法;是现实为ArrayList的add()方法;
@Override
public void offer(E element) {
list.add(list.size(), element);
}
(2)与(1)同理队列poll()方法是ArrayList的remove()方法;因为队的原理是队头出所以移
除的是ArrayList的第一个元素即remove(0);
@Override
public E poll() {
return list.remove(0);
}
(3)与(1)同理队列peek()方法是ArrayList的get()方法;又因获取的是队头元素;所以
ArrayList对应为get(0);
@Override
public boolean isEmpty() {
return list.isEmpty();
}
(4)与(1)同理 队的toString(),iterator(),clear(), isEmpty(),size()与ArrayList的
toString(),iterator(),clear(), isEmpty(),size()同理;
@Override
public boolean isEmpty() {
return list.isEmpty();
}
@Override
public void clear() {
list.clear();
}
@Override
public int size() {
return list.size();
}
@Override
public Iterator<E> iterator() {
return list.iterator();
}
@Override
public String toString() {
return list.toString();
}
三、测试代码
例题:
将1~5存入队中,并遍历输出
输出结果为:[1,2,3,4,5]
将1,2输出,在遍历输出栈
输出结果为:[3,4,5]
代码如下:
package p0.测试;
import p2.线性结构.ArrayQueue;
public class TestArrayQueue {
public static void main(String[] args) {
ArrayQueue<Integer> queue = new ArrayQueue<>();
for (int i = 1; i <= 5; i++) {
queue.offer(i);
}
System.out.println(queue);
System.out.println(queue.poll());
System.out.println(queue.poll());
System.out.println(queue);
}
}
运行代码:
与例题预想结果一致