先看一下各集合类之间的关系:
Collection
|-List
| --LinkedList
| --ArrayList
| --Vector
| --Stack
|-Set
Map
|-HashTable
|-HashMap
从上述图中即可明了的看出集合之间的关系。
Collection接口是罪基础的集合接口,List和Set分别继承它,Map没有继承。
List是有序的Collection,使用List接口可以精确地控制每个元素插入的位置,并且可以通过索引来访问每个元素。在list中可以存在相同的元素,和Set不同,在set中不可以存在相同的元素。
实现List接口的常有类有:LinkedList、ArrayList、Vector和Stack。
LinkediList是一链表,允许null元素,它提供了get、remove、insert方法。LinkedList没有实现同步,如果多个线程同时访问同一个List,则要自己实现,可以在创建list时构建一个同步的list:List list = Collections.synchronizedList(new LinkedList<T>());
linkedList内存使用量要小一些,添加删除元素效率较高,元素随机访问的效率较地,ArrayList与之相反。
ArrayList它允许全部的元素,包括null,和LinkedList一样不是同步的,除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。在添加大量元素前,应用程序可以使用 ensureCapacity 操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。
Vector非常类似于arrayList,与之不同的是Vector是同步的。
Stack继承Vector,实现了一个先进后出的堆栈,Stack在刚被创建时是空栈。
Set接口是一个不包含重复元素的Collection,因而最多可拥有一个null值。
Map没有继承Collection,它提供了key到value的映射,一个map中不能包含相同的key,一个key对应一个value。
HashTable类
HashTable继承map,实现了一个key-value映射的哈希表,任何非空的对象都可以存入到hashTable中,并且hashTable是同步的。
HashMap类与hashTable不同的是HashMap是非同步的,并且允许null值。
Collection
|-List
| --LinkedList
| --ArrayList
| --Vector
| --Stack
|-Set
Map
|-HashTable
|-HashMap
从上述图中即可明了的看出集合之间的关系。
Collection接口是罪基础的集合接口,List和Set分别继承它,Map没有继承。
List是有序的Collection,使用List接口可以精确地控制每个元素插入的位置,并且可以通过索引来访问每个元素。在list中可以存在相同的元素,和Set不同,在set中不可以存在相同的元素。
实现List接口的常有类有:LinkedList、ArrayList、Vector和Stack。
LinkediList是一链表,允许null元素,它提供了get、remove、insert方法。LinkedList没有实现同步,如果多个线程同时访问同一个List,则要自己实现,可以在创建list时构建一个同步的list:List list = Collections.synchronizedList(new LinkedList<T>());
linkedList内存使用量要小一些,添加删除元素效率较高,元素随机访问的效率较地,ArrayList与之相反。
ArrayList它允许全部的元素,包括null,和LinkedList一样不是同步的,除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。在添加大量元素前,应用程序可以使用 ensureCapacity 操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。
Vector非常类似于arrayList,与之不同的是Vector是同步的。
Stack继承Vector,实现了一个先进后出的堆栈,Stack在刚被创建时是空栈。
Set接口是一个不包含重复元素的Collection,因而最多可拥有一个null值。
Map没有继承Collection,它提供了key到value的映射,一个map中不能包含相同的key,一个key对应一个value。
HashTable类
HashTable继承map,实现了一个key-value映射的哈希表,任何非空的对象都可以存入到hashTable中,并且hashTable是同步的。
HashMap类与hashTable不同的是HashMap是非同步的,并且允许null值。