Skip to content
类ArrayList是最流行的Java数据结构之一,它实现了可缩放的对象数组,比数组更灵活、更有用。由于类ArrayList负责根据需要改变长度,所以它必须根据元素的增加和删除决定缩放多少。

**如何创建:**
要创建ArrayList对象,可使用不接受任何参数的构造函数:
ArrayList golfer = new ArrayList();
该构造函数创建了一个不含任何元素的默认链表。所有链表刚创建时都为空。

链表的长度(size)指的是它当前存储的元素数。
链表的容量(capacity)总是大于或等于其长度。

创建指定容量的链表:
ArrayList golfer = new ArrayList(30);
将给该列表分配足够的内存,以支持30个元素。达到指定的容量后,链表将自动加长,增加的长度为初始容量的一半。因此加入第30个元素后,golfer的容量将增加到45。给链表分配额外的空间需要时间,还需要消耗内存,因此创建链表时,最好根据预期要使用的元素数指定其容量。

**常用方法:**
不能像数组那样使用方括号[]来访问链表中的元素,而必须使用ArrayList类的方法。

add(Object)方法将元素加入到链表中,如下所示:

golfer.add("Park");
golfer.add('Lewis");

可使用方法add(int,Object)和remove(int)分别将元素加入到指定位置以及删除指定位置的元素:

golfer.add(1,'"Kim");
golfer.add(0,"Thompson")
golfer.remove(3);
第一个add()调用将一个元素加入到索引1指定的位置,即字符串Park和Lewis之间。第二个add()调用将一个元素插入到索引0指定的位置,即链表表头。原来的元素都向后移动一个位置,以容纳插入的字符串Thompson。

方法removeElement()删除指定的元素:

golfer.remove("Pressel");

lastElement()返回一个Object。ArrayList可用于存储各种类型的对象,同时必须将返回值转换为加入到链表中的类型,如下get方法一样。

方法get()让您能够通过索引来检索链表中的元素,如下:

String s1 = (String) golfer.get(0);
String s2 = (String) golfer.get(2);

可以使用set()方法来修改指定的元素:

golfer.set(1,"Pressel");

方法clear()可以删除所有的元素:

golfer.clear();

ArrayList类还提供了一些不通过索引来处理元素的方法。这些方法在链表中搜索特定的元素,其中第一个是方法contains(Object),它检验链表是否包含指定的元素:

boolean isThere = golfer.contains("Kerr");

另一个搜索方法是indexOf()方法,它找出元素的索引:

int I = golfer.indexOf("Ko");
如果链表包含指定的元素,indexOf()方法将返回该元素的索引,否则返回-1。

**判断和操纵链表长度的方法:**
int size = golfer.size();
链表有两个与长度相关的属性:长度和容量。长度指的是链表包含多少个元素,而容量是分配用来存储元素的内存量。容量总是大于或等于长度。可以使用方法trimToSize()来使容量与长度相等:
golfer.trimToSize();
==Java====类库还包含====Vector====类,这种数据结构的工作原理与链表很像。这个类是已摒弃的集合,这是因为====ArrayList====优于====Vector==

**遍历数据结构**
可以使用iterator(),它返回一个Iterator,其中包含可供您遍历的元素列表:
Iterator it = golfer.iterator();

可以使用迭代器来依次遍历元素。这个例子可以使用接口Itterator定义的方法来处理列表it

下面的for循环使用迭代器及其方法来遍历整个链表:
for (Iterator I = golfer.iterator(); i.hasNext();)
String name = (String) i.next();
System.out.println(name);
}

本站总访问 — 次