JavaSE_集合_LinkedList、ArrayList类

List集合中的对象按照一定的顺序排放,里面的内容可以重复。

实现List接口的类有

LinkedList(链表)、 ArrayList(动态数组)、Vector(动态数组)、Stack(堆栈)


一、LinkedList类(链表)

在上一个篇幅中已经提到LinkedList类是实现了Collection接口,所以它可使用所有Collection接口中声明的方法。

LinkedList类的数据结构是双向链表结构。它的每个结点不仅包含了值,还包括对上一个及下一个结点的引用,所以在进行数据的删除和插入时是高效的,但是在查询上是低效率的,这也是链表数据结构的普遍特点。

在程序需要采用整数索引访问元素时我们一般不用LinkedList类,因为其效率低下,但是即便如此Java还是提供了一个用来访问某个特定元素的get()方法。get()方法每次查找一个元素时都要从列表的头部开始重新搜素,如果索引大于size()/2时就从列表的尾部开始搜索。如果需要对集合进行随机访问就使用数组或者ArrayList。


java.util.List

1)    ListIterator listIterator(); 返回一个列表的迭代器,以便访问列表中的元素。

2)    ListIterator listIterator(int index); 返回一个列表的迭代器,以便访问列表中的元素,这个元素是第一次调用next返回的给定索引的元素。

3)    void add(int i, E element); 在给定位置添加一个元素。

4)    void addAll(int i, Collection elements);将某个列表的所有元素添加到此列表的指定位置。

5)    E remove(int i); 删除给定位置的元素并且返回这个元素。

6)    E get(itn i); 获取给定位置的元素。(数据结构比较复杂时不推荐使用)

7)    E set(int i, E element); 用新元素取代指定位置的元素,返回原来那个元素。

8)    int indexOf(Object element); 返回与指定元素相等的元素在列表中第一次出现的位置,如果没有这样的元素返回-1。

9)    int lastIndexOf(Object element); 返回与指定元素相等的元素在列表最后一次出现的位置,如果没有这样的元素返回-1。


java.util.ListIterator

1)    void add(E newElement); 在当前位置添加一个新元素。

2)    void set(E newElement); 用新元素取代next或者previous上次访问的元素。如果在next或previous上次调用之后列表的结构被修改了,将抛出一个IllegalStateException异常。

3)    boolean hasPrevious(); 当反向迭代列表时,还有可供访问的元素返回true。

4)    E previous(); 返回前一个对象,如果已经到达了列表头部抛出NoSuchElementException异常。

5)    int nextIndex(); 返回下一次调用next方法时将返回元素的索引。

6)    int previousIndex(); 返回下一个调用previous方法时将返回元素的索引。


java.util.LinkedList

1)    LinkedList(); 构造一个空链表。

2)    LinkedList(Collection elements); 构造一个链表,请将集合中所有元素添加到这个链表中。

3)    void addFirst(E element);

       void addLast(E element);

       将某个元素添加到列表的头部或者尾部。

4)    E getFirst();

       E getLast();

       获取列表头部或者尾部的元素。

5)    E removeFirst();

       E removeLast();

       删除并返回列表头部或者尾部的元素。   



二、ArrayList(数组列表)

数组列表的优点就支持快速随机访问,但它的删除和新增性能效率低下,且下标越小时耗时越长,因为它要移动的元素越多。所以如果我们要经常对数据列表进行随进访问时推荐使用ArrayList而非LinkedList。

ArrayList实现了Collection接口的方法。

从类java.util.AbstractList继承的方法:equals、hashCode、iterator、listIterator。

从类java.util.AbstractCollection继承的方法:containsAll、removeAll、retainAll、toString。

具体用法和LinkedList中一样不再赘述。





你可能感兴趣的:(01_JavaSE)