一、列表概述
List,顾名思义,是元素的有序序列。
当我们讨论List时,最好将它与Set(一组惟一的无序元素)进行比较。
下面是集合的类层次结构图。
从层次结构图中,您可以了解Java集合的一般概念。
二、ArrayList vs。LinkedList vs。Vector
在层次结构图中,它们都实现了List接口。
它们非常相似。
它们的主要区别在于它们的实现,这导致了不同操作的不同性能。
ArrayList实现为可调整大小的数组。
随着更多的元素被添加到ArrayList中,它的大小会动态增加。
它的元素可以通过使用get和set方法直接访问,因为ArrayList本质上是一个数组。
LinkedList实现为一个双链表。
它在添加和删除上的性能优于Arraylist,但在get和set方法上的性能则较差。
Vector与ArrayList类似,但它是同步的。
如果你的程序是线程安全的,ArrayList是一个更好的选择。
随着元素的增加,Vector和ArrayList需要更多的空间。
Vector每次都使其数组大小加倍,而ArrayList每次都增长其大小的50%。
LinkedList还实现了队列接口,它添加了比ArrayList和Vector更多的方法,如offer()、peek()、poll()等。
注意:ArrayList的默认初始容量非常小。
构造具有较高初始容量的ArrayList是一个好习惯。这样可以避免调整大小的成本。
三、ArrayList的例子
4. LinkedList的例子
如上例所示,它们与use类似。
真正的区别在于它们的底层实现和操作复杂性。
5. Vector
Vector和ArrayList几乎是相同的,区别在于Vector是同步的。
因此,它的开销比ArrayList大。
通常,大多数Java程序员使用ArrayList而不是Vector,因为他们可以显式地自己同步。