我们当前定义的数据是只可以存放整型(int),这在计算机世界中也是不允许的,可能是字符串、浮点、布尔、用户指定的类型都是可能,所以让数组可以存放任何数据类型是必要的。
泛型,让我们的数据结构可以存放“任何”数据类型
在java中解决数组中可以存放其他数据类型的办法是使用泛型,但是泛型中的存放任何数据类型是有奇异的,只能存放类对象,但是我们的基本数据类型(boolean,byte,char,short,int,long,float,double)是不支持的,这就有点奇怪了,基本的不支持,但是我就要存放基础的怎么办呢?
为每种基本数据类型提供对应的包装类,jboolean->Boolean,byte->Byte,char->Char,short->Short,int->Int,long->Long,float->Float,double->Double,可以看到包装类名就是基本类型名称首字母大写,那基本类型和包装类之间的转换怎么办呢?我要存放int还要转换成为包装类Int嘛?不需要,包装类和基本类型之间可以自动的无缝转换,程序自动处理,在用户层面是感应不到的
通过上面的了解,泛型可以解决数组存放其他格式的数据,为此我制作一个支持泛型的数组,one by one。
首先定义支持泛型的数组,在定义Array类的时候我们指定了泛型名称,相当于变量名,只不过泛型存储的是数据类型(Int,Float),而变量存储的是具体数据(123,1.14,false, student)。我们起的泛型名叫“E”,你也可以起其他的名字,比如Element,怎么方便怎么来
定义泛型数组那么其他地方也要跟着变化,不能再是int数据类型了,而是我们的泛型,我们一一进行修改
构造函数这里我们并没有直接声明一个泛型数组,在java中是不支持这样操作的,只有声明一个对象数组再转换为泛型数组,具体的原因不太明白,先跟着这样操作
新增数组我们把add进行了简单的重构,可以支持泛型,并且我们把方法里的两个判断改变了一下顺序,把数组是否满了放在了最前面,判断index是否越界放在了后面。会出现这样的情况,size已经超出了data.length,但是我们还得判断index越界的问题,应该判断是否有这么多仓位,再判断是否都装有货物,想解决有的问题,再解决装多少的问题,这在现实世界也是需要考虑的
重构addFirst、addLastaddFirst和addLast修改的很少,让其支持泛型就可以了
重构get、set方法get和set重构的地方也很少,只需修改元素e的数据类型类型即可
查找find和包含contains 移除数组 移除数组的其他方法 声明Array数组这样我们的数组Array就支持任何数据类型了
网友评论