List集合包括List接口以及List接口的所有实现类。List集合中的元素允许重复,个元素的顺序就是对象插入的顺序。类似Java数字,用户可通过使用索引来访问集合中的元素。
List接口
List接口继承了Collection接口,因此包含Collection中的所有方法,此外,List接口还定义了一下啷个非常重要的方法,如下表。
由于Collection接口是List集合和set接口的父接口,因此上一篇博客中的方法表,对于List集合和Set集合都是通用的。
List接口的实现类
List接口由于不能直接实例化,因此,在JDK中提供了其实现子类,最常用的实现子类有ArrayList类与LinkedList类,分别如下。
1,ArrayList类的优点是实现了可变的数组,允许保存所有元素,包括null,并可以根据索引位置对集合进行快速的随机访问,缺点是向指定的索引位置插入对象或删除对象的速度较慢,因为ArrayList实质上是使用数组来保存集合中的元素的,在增加和删除指定位置的元素时,虚拟机会创建新的数字,效率低,所以在对元素做大量的增删操作时不适合使用ArrayList集合。
2,LinkedList类采用链表结构保存对象,这种结构的优点是便于向集合中插入和删除对象,需要向集合中插入,删除对象时,使用LinkedList类实现的List集合的效率较高。但对于随机访问集合中的对象,使用LinkedList类实现List集合的效率较低。
实例化List接口对象时,建议优先使用ArrayList,只有在插入和删除操作特别频繁时,才使用LinkedList。
使用List集合时通常声明为List类型,可通过不同的实现类来实例化集合。
例如,分别通过ArrayList,LinkedList类实例化List集合。
List<E> list = new ArrayList<>();
List<E> list2 = new LinkedList<>();
在上面的代码中,E代表Java中的泛型。这个后面马上就会说道。下面看一个小例子。
与数组相同,集合的索引也是从0开始。
Iterator迭代器
在上面的小例子中,使用了for循环遍历List集合中的元素,那么有没有其他更加快捷有效的遍历集合中元素的方法呢?答案是肯定的,在java.util包中提供了一个Iterator接口,该接口是一个专门对Collection进行迭代的迭代器,其常用方法如下表。
程序中使用Iterator迭代器时,可以只用Collection接口中的iterator()方法返回一个Iterator对象。下面演示如何使用Iterator迭代器遍历集合。