数组队列
程序员文章站
2024-03-18 11:17:46
...
数组队列
数组有固定的长度,里面放置的数据也都是固定的一个类型,
当不能确定需要的长度时,实例化数组时的长度可能不够用,又或者太大造成空间浪费,
因此,我们需要一个更加灵活的东西来存储东西,
它的长度可以随着需求变化,里面存放的内容也可以多种多样。
这就是队列
队列在本质上也是一种数组,但它是活的,可变程度很大。
队列里面可以写多种方法对其进行添加,移除等多种操作。
为了让队列里可以存储多种不同类型的数据,在定义队列类中的数组类型 时可以这样。
private Object[] array = new Object[0];
这就使得任何类型的内容都可以存入该队列的数组中。
但是,有些时候使用队列只想要存入某种特定类型的数据,这时是否要重写一个队列,
在其中定义一个你想要的数据类型的数组呢?
不用这么麻烦。
/**
* 队列类
* @param args
*/
public class Arraylist<E> {
private int size = 0;
private Object[] array = new Object[0];
// 添加新元素
public void add(E e) {
// 定义一个比原数组长一个单位的新数组array1
Object array1[] = new Object[size + 1];
// 把原数组中的元素传给新数组
for (int i = 0; i < size; i++) {
array1[i] = array[i];
}
// 把新元素添加给新数组的最后一个位置
array1[size] = e;
// 让原数组指向新数组
size++;
array = array1;
}
// 删除,根据下标
public void delete(int n) {
if (n >= 0 && n < size) {
// 定义一个比原数组短一个单位的新数组array1
Object array2[] = new Object[size - 1];
// 把被删除元素前的元素原样传给新数组
for (int i = 0; i < n; i++) {
array2[i] = array[i];
}
// 把被删除元素后的元素向前移动一位传给新数组
for (int i = n; i < size - 1; i++) {
array2[i] = array[i + 1];
}
// 数组元素个数减少
size--;
// 让原数组指向新数组
array = array2;
}
}
//得到对象,根据下标
public E gete(int n){
if(n>=0&&n<getsize()){
E e=(E) array[n];
return e;
}
return null;
}
// 得到数组元素个数
public int getsize() {
return size;
}
}
这样写好队列之后,想要使用队列时,只需要在初始化的时候这样:
public Arraylist<Chess> arrc = new Arraylist();
在尖括号里表明你想存的数据类型就可以啦~
很方便吧。
上一篇: List集合以及Queue集合
下一篇: Java实现阻塞队列