本文demo基于数组实现,主要用来帮助理解队列先进先出的特点
public class MyArrayQueue { //声明一个数组,int、Integer都行,这里用Integer是因为不想看到int的默认值0 private Integer[] arr; //声明一个变量index来记录当前下标 private int index = 0; public MyArrayQueue(Integer size) { //实例化数组时的容量 this.arr = new Integer[size]; } public MyArrayQueue() { //没有指定容量的话默认为5 this.arr = new Integer[5]; } //放入元素 public void add(int p) { arr[index++] = p; } //取出头部元素 public int get() { return arr[0]; } //取出头部元素并删除 public int getAndRemove() { int res = this.arr[0]; //将数组元素往前平移 for (int i = 1; i < this.arr.length; i++) { arr[i - 1] = arr[i]; } //记得下标-1 index--; return res; } //打印当前数组 public void switchArr() { for (int i = 0; i < this.arr.length; i++) { System.out.print(arr[i] + " "); } } }
测试:
public void myQueueTest(){ MyArrayQueue queue = new MyArrayQueue(8); queue.add(1); queue.add(3); queue.add(5); queue.add(7); queue.add(9); System.out.println(queue.getAndRemove());//取出头部元素并删除,应该返回1 System.out.println(queue.get());//这次应该返回3,因为1已经被删除了 queue.switchArr();//再来看看当前数组内元素 }
结果:
1
3
3 5 7 9 null null null null
打完收工