世界微尘里,吾宁爱与憎
泛型
泛型

泛型

首先通过了解泛型数组列表引入泛型的概念

泛型数组列表(ArrayList)

在许多程序设计语言中,比如C/C++,必须在编译时就确定整个数组的大小,这样就会导致容易出现数组长度不够用或者存储空间浪费的情况,所以在C语言中,程序员们采用了malloc函数进行动态分配内存

那么,在Java中有没有相似的方法呢?

自然是有的,解决这个问题最简单的方法就是使用Java中的另一个类,ArrayList类,ArrayList类类似于数组,但在添加或删除元素时,它能够自动地调整数组容量,而不需要为此编写任何代码

在使用ArrayList类时,需要指明数组保存的元素对象的类型,需要用一对尖括号将类名括起来追加到ArrayList后面,例如

ArrayList<Employee> staff=new ArrayList<Employee>();

add()

使用add方法可以将元素添加到数组列表的末尾中

staff.add(new Employee(...));

数组列表管理着一个内部的对象引用数组,如果调用add而内部数组已经满了,数组列表就会自动地创建一个更大的数组,并将所有的对象从较小的数组中拷贝到较大的数组中

同时,该方法也可以指定索引位置

staff.add(2,new Employee(...));

remove()

删除指定索引位置的元素,并将后面的所有元素前移,该方法有返回值,返回值为所删除的元素

size()

size方法返回数组列表中包含的实际元素的个数,等价于数组.length

访问数组列表元素

在访问泛型数组列表时,不能使用[]语法格式,而要使用get与set方法

例如

staff.set(i,harry);//harry是一个对象名
Employee e=staff.get(i);

这种方法在访问大量元素时极不方便,所以,为了使访问元素可以变得简单,可以使用toArray()方法将泛型数组列表拷贝到一个数组当中

var a=new X[list.size()];
list.toArray(a);//X是类名,a是变量名

那么,如何将一个数组转换成泛型数组列表,这里有一个比较流行的办法

ArrayList<Element> arrayList = new ArrayList<Element>(Arrays.asList(array));

这里用到了ArrayList的另一个构造函数

ArrayList(Collection < ? extends E > c) : 构造一个包含特定容器的元素的列表,并且根据容器迭代器的顺序返回.

泛型的概念

在上述介绍的泛型数组列表中,使用了<Employee>来限定了该数组列表只能存放Employee的对象,这种限制某种容器存放数据类型的方法就称为泛型

泛型的用法是在容器后面添加<Type>

Type可以是类,抽象类,接口

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注