先行知识:
①泛型
java中有几种泛型,在定义类的时候可以为这些类声明泛型。泛型可以指代任意数据类型,因此使用泛型的好处就是泛型属性可以赋予多种数据类型而不用强制转换。注意:泛型不是类,只指代数据,不能实例化对象。
②泛型的声明:
要想在类中使用泛型,需要在定义类名的时候做相应的定义,可以用任意字母或字符串来代替,多个泛型用逗号隔开,并用方括号括起来。(与定义继承、接口类似,只不过继承的标识符是extends,泛型是<>)
如:class Box<E>{};class Work<A,B>{};
③队列
一种数据结构,有着串行、先进先出等特点。可以将多种数据像排队一样依次存入取出,非常方便。
④Object类
Object类位于java.lang包中,是所有Java 类的祖先,Java中的每个类都由它扩展而来。因此任何类型都可以赋值给Object类的对象(子类可以赋值给父类,Object类是所有类的父类),因此存进来的泛型数据都赋值给Object类的对象。
框架:
一般的队列只需要一种泛型,java自带的队列ArrayList类即是如此。所以我们自己定义的队列也只需要定义一种泛型即可,可以用任何字母代替,不过一般习惯性用E来代替(Element)
简单的队列需要有以下几个功能:
①添加新的数据
②返回(查找)某个数据
③删除某个数据
④返回已存储数据的个数
public class MyArrayList<E>{
private int size;//记录当前数组队列中存储了多少个元素
private Object[] array;//声明存进来的泛型数据的数组
public MyArrayList(){//构造方法,构造了一个长度是0的数组队列
array = new Object[0];
size = 0;
}
public void add(E e){//向数组队列中添加元素的方法
// 实例化一个新的数组,长度是array数组的长度+1;当然也可以用类己定义的带的属性size+1,但这个更直观
Object[] newArray = new Object[array.length + 1];
// 将array数组中的数据放入到newArray数组中
for (int i = 0; i < array.length; i++) {
newArray[i] = array[i];
}
newArray[array.length] = e;// 将新的数据添加到新数组的末尾
array = newArray;// 将新数组的地址赋给原始数组
size++;// 计数器增加1
}
public void remove(int index) {//向数组队列中移除元素的方法,注意要考虑index不在范围内的情况
}
public E get(int index) {//获取指定索引位置的元素,注意要考虑index不在范围内的情况
}
public int size() {//获取当前数组队列中存储的元素个数
return size;
}
}