写在前面
队列就像是我们平时排队一样,先来的人先享受服务,所以队列的一个重要特性就是先进先出(FIFO,First In First Out)。
而在Java中,队列Queue的实现类非常多:
那么在这里,我们就不一一描述这些实现类了,而是自定义实现队列,实现的方式也是基于两种基本的数据结构,数组和链表。
利用数组实现队列
利用数组实现队列的时候应该注意一点,那就是队伍本身是在移动的,当队首出队时,排在队首后面的人应该往前移动,就像是我们平时排队一样,队伍最前面的人走了,我们应该往前走一步,把空位补上。
对于队列而言,最基本的方法就是,入队,出队,以及判断队列是否为空,而当我们用数组来实现队列的时候,就必须得到考虑到扩容问题。
代码如下:
import java.util.Arrays;
/**
* Java Queue队列的数组实现
*
* @作者(yequan17)
* @版本(2021.12.9)
*/
public class JQueueArray
{
public static class ArrayQueue<E>{
Object[] queue;
int size;
public ArrayQueue(){
queue=new Object[10];
}
public boolean isEmpty(){
return size==0;
}
//入队
public void offer(E data){
ensureCapacity(size+1);
queue[size++]=data;
}
//扩容
private void