美文网首页
数据结构之数组(泛型)

数据结构之数组(泛型)

作者: Jack_7eb5 | 来源:发表于2018-05-22 22:02 被阅读5次

我们当前定义的数据是只可以存放整型(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、addLast

addFirst和addLast修改的很少,让其支持泛型就可以了

重构get、set方法

get和set重构的地方也很少,只需修改元素e的数据类型类型即可

查找find和包含contains 移除数组 移除数组的其他方法 声明Array数组

这样我们的数组Array就支持任何数据类型了

相关文章

  • 数据结构之数组(泛型)

    我们当前定义的数据是只可以存放整型(int),这在计算机世界中也是不允许的,可能是字符串、浮点、布尔、用户指定的类...

  • 实战技术

    第一课 泛型 泛型注意点:在数组中,一般用可变数组添加方法,泛型才会生效,如果使用不可变数组,添加元素,泛型没有效...

  • Programming Assignment 2: Deques

    实现一个泛型的双端队列和随机化队列,用数组和链表的方式实现基本数据结构,主要介绍了泛型和迭代器。 Dequeue....

  • C语言 泛型动态数组

    泛型实现思路:万能指针void *动态数组实现思路:动态进行数组内存的扩容 realloc 泛型动态数组 数组可以...

  • TypeScript 泛型

    泛型函数 使用 数组 类 泛型约束

  • V语言学习笔记-14泛型

    目前的泛型主要有这三种:泛型结构体,泛型函数,泛型方法 泛型结构体 泛型函数 判断2个数组是否相等的泛型函数 泛型方法

  • 4.泛型数组——GenericArrayType

    参考: 1. 泛型数组

  • 泛型

    分别用几个demo说明一下泛型的用法。 1、 一个泛型变量 2、 两个泛型变量 3、 数组泛型 4、 集合泛型 5...

  • 集合 字典 17_9_6

    //非泛型数列取出来都为 objec //栈 对列 数组 都可以纯空数据 //Stack 栈 数据结构n 可被继承...

  • 泛型数组

    泛型数组 正如之前在Erase.java中所见,一般的解决方法是在任何想要创建泛型的地方使用ArrayList 这...

网友评论

      本文标题:数据结构之数组(泛型)

      本文链接:https://www.haomeiwen.com/subject/wyhwdftx.html