目录
声明数组列表
访问数组列表元素
类型化与原始数组列表的兼容性
泛型数组列表的引入
在别的语言里面,通常需要在编译时就确定数组的大小,这样的情况会让我们很为难,有时候一个员工数组里面可能只有一个人,但是这个数组的大小是100,这无疑浪费了存储空间,有时这个数组的大小只有100,但是如果有一个150人的大型部门就很难办了。
但在Java中,情况就好多了,它允许在运行时确定数组的大小
在Java中最简单的方法就是使用Java的另一个类ArrayList。Array List类类似与数组,但在添加或者删除元素时,它能自动的调整数组容量,而不需要为此编写任何代码
ArrayList简单介绍:
ArrayList是一个有类型参数的泛型类
为了指定数组列表保存的元素对象的类型,需要用一对尖括号括起来追加到ArrayList后面,像ArrayList<Employee>,下面将详细介绍
在这个例子中,new ArrayList<>()将赋值给一个类型为ArrayList<Employee>的变量
使用add方法可以将元素添加到数组列表
使用size方法能知道数组列表包含的实际元素个数
在调用数组之前使用ensureCapacity方法能分配一个包含100个对象的内部函数。这样一来,前100次的add调用不会带来开销很大的重新分配空间
另外还可以把初始容量传递给ArrayList构造器:
ArrayList<Employee> xiaoming=new ArrayList<>(10);
一旦准确的知道数组列表的大小将保持恒定,不再发生变化,就可以调用timeToSize方法。这个方法将存储块的大小调整为保存当前元素数量所需要的存储空间。垃圾回收将回收多余的空间
注意:一旦削减了数组列表的大小,添加新元素就需要再花时间移动存储块,所以应当确定不会再向数组列表添加任何元素时再调用timeToSize方法
要替换第i个元素要,可以使用set方法
只有当数组列表的大小大于i时,才能调用list.set(i,x)要使用add方法为数组添加新元素,而不是set方法,set方法只能用来替换数组中已经加入的元素
想要得到一个数组元素的值可以使用get方法
使用add方法,位置再索引之后的元素都得向后移动一个位置,为添加的元素流出空间,插入新元素之后如果数组列表新的大小超过了容量,数组列表就会重新分配它的存储空间
可以使用remove方法移除一个元素,这样这个元素之后的元素都需要向前移动一位,并且数组的大小减一
如果需要经常在中间插入,删除元素,就需要考虑到用链表了。
你可能对泛型,泛型类感到疑惑。在这里首先需要了解一下,什么是泛型,什么是泛型类,什么是类型化参数这几个概念,为以后的泛型程序设计的学习铺个头
链接:泛型学习
参考书籍:Java核心技术 卷1(原书第11版)