1.简介
队列的特点是允许在队头删除队尾插入(先入先出)。
2.实现
通过数组实现队列
public class ArrayQueue<T> {
private T data[];
private int size;
private int tail;
//初始化
public ArrayQueue(int size){
this.data = (T[])new Object[size];
this.size = size;
tail = -1;
}
//入栈 当队列的大小没有超过数组的大小时插入数据
public void add(T t){
if(tail < -1 || tail > data.length){
throw new IllegalArgumentException("index is error");
}
//当插入的值小于
if(tail < data.length - 1){
tail ++;
data[tail] = t;
} else {
System.out.println("队列的空间不足无法新增数据");
}
}
//出栈
public void del(){
if(tail == -1){
throw new IllegalArgumentException("array is null");
}
T[] temp = (T[])new Object[size];
for(int i = 1; i <= tail; i++){
temp[i -1] = data[i];
}
tail --;
data = temp;
}
//遍历队列
public void show(){
for(int i = 0; i <= tail; i++){
System.out.print(data[i]+" ");
}
}
}
测试
public class Test {
public static void main(String[] args){
ArrayQueue lstQue = new ArrayQueue(10);
lstQue.add("one");
lstQue.add("two");
lstQue.add("three");
lstQue.add("four");
lstQue.show();
lstQue.del();
System.out.println("");
lstQue.show();
}
}
3.结论
优点:提供先进先出的存取方式,添加速度快
缺点:只能在一头添加一头获取,存取其他项都很慢
使用场景:多线程阻塞队列管理非常有用