队列之于数组,就如同一系列大小不一的瓶子之于某个特定的水瓶。
现在有人给了我们一些水,为了不浪费空间,我们要选一个适当大小的瓶子来装,这时我们又得了另外一些水,那为了把水都装在一个瓶子里,就要选一个再大些的瓶子,先把原来的水倒进去,再把新到的水装进去,这样就完成了转化。
第一次装水的瓶子就相当于数组,而最终装下所有水的则为队列。
数组是可以这样定义的:
int t[] = new int[10];
int[] t1 = new int[]{1,2,3,4,5,6,7};
int t2[] = {1,2,3,4,5,6,7};
String s[] = {"AAA","BBB","CCC"};
[注]:数组的长度是固定的,所以在定义时必须确定长度。
再来看一下如何写一个队列,也就是一个不确定长度的数组:
public class MyArray {
//定义一个长度为0的初始数组
String[] src = new String[0];
//将s放入初始数组
public void add(String s){
//定义新数组,长度是原始数组长度+1
String[] temp = new String[src.length+1];
//将原数组中的数据按下标顺序拷贝到新数组
for(int i=0;i<src.length;i++){
temp[i]=src[i];
}
//将新元素放到新数组最后一个下标位置
temp[src.length] = s;
//将新数组赋给原数组
src = temp;
}
}
队列不仅可以增加元素,还可以删除元素(指定下标或指定值)、插入元素、修改某一元素等。
这就是队列了,其实它就是伪装之后的数组。