5.3泛型数组列表
2019-03-20 本文已影响0人
十六只猴子王
使用ArrayList类,它在添加或删除元素时,具有自动调节数组容量的功能,而不需要为此编写任何代码,为了指定数组列表保存的元素对象类型,需要用一对尖括号将类名括起来加在后面
- 声明和构造一个保存Cat对象的数组列表
ArrayList<Cat> c = new ArrayList<>();
如果已经清楚或能够估计出数组可能存储的元素数量,就可以在填充数组之前调用ensureCapacity
方法:
c.ensureCapacity(100);//这个方法调用将分配一个包含100个对象的内部数组
ArrayList<Cat> c = new ArrayList<>(100);//可以把初始容量传递给ArrayList构造器
如果为数组分配100个元素的存储空间,数组就有100个空位置可以使用。而容量为100个元素的数组列表只是拥有保存100个元素的潜力。
- 添加元素add
c.add(new Cat("n1", "color1"));
c.add(new Cat("n2", "color2"));
向后移动元素,以便插入元素。示例:
c.add(0, new Cat("c", "yellow"));
-
set
方法
set方法设置数组列表指定位置的元素,这个操作将覆盖这个位置的原有内容。 -
remove
删除一个元素,并将后面的元素向前移动。 -
get
获取指定位置的元素值。 -
trimToSize
将数组列表的存储容量削减到当前尺寸。
import java.util.ArrayList;
public class Test1 {
public static void main(String[] args){
ArrayList<Cat> c = new ArrayList<>();
c.ensureCapacity(100);
System.out.println(c.size());
c.add(new Cat("n1", "color1"));
c.add(new Cat("n2", "color2"));
c.set(1, new Cat("nx", "cx"));
c.add(0, new Cat("c", "yellow"));
for (Cat cat : c) {
System.out.println(cat.name + " " + cat.color);
}
System.out.println(c.size());
Cat d = c.get(0);
System.out.println(d.name);
}
}
class Cat{
String name;
String color;
Cat(String name, String color){
this.name = name;
this.color = color;
}
}
0
c yellow
n1 color1
nx cx
3
c
-
使用Arraylist注意如下变化
使用add
将任意多的元素添加到数组中
使用size()
替代length计算元素的数目
使用a.get()
代替a[i]访问元素 - 适用场景
如果想要保存一些在整个程序运行期间都会存在而且不变的数据,我们可以将它们放进一个全局数组里,但是如果我们单纯只是想要以数组的形式保存数据,而不对数据进行增加等操作,只是方便我们进行查找的话,那么,我们就选择ArrayList。而且还有一个地方是必须知道的,就是如果我们需要对元素进行频繁的移动或删除,或者是处理的是超大量的数据,那么,使用ArrayList就真的不是一个好的选择,因为它的效率很低,使用数组进行这样的动作就很麻烦,那么,我们可以考虑选择LinkedList。