1. ArrayList
ArrayList 是 List 接口的大小可變數組的實現。實現了所有可選列表操作,並允許包括 null 在內的所有元素。除了實現 List 接口外,此類還提供一些方法來操作內部用來存儲列表的數組的大小。(此類大致上等同於 Vector 類,除了此類是不同步的。)
聲明:public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
// ArrayList 構造方法摘要
ArrayList() // 構造一個初始容量爲 10 的空列表。
ArrayList(Collection<? extends E> c) // 構造一個包含指定 collection 的元素的列表,這些元素是按照該 collection 的迭代器返回它們的順序排列的。
ArrayList(int initialCapacity) // 構造一個具有指定初始容量的空列表。
2. LinkedList
LinkedList 是 List 接口的鏈接列表實現。實現所有可選的列表操作,並且允許所有元素(包括 null)。除了實現 List 接口外,LinkedList 類還爲在列表的開頭及結尾 get、remove 和 insert 元素提供了統一的命名方法。這些操作允許將鏈接列表用作堆棧、隊列或雙端隊列。
此類實現 Deque 接口,爲 add、poll 提供先進先出隊列操作,以及其他堆棧和雙端隊列操作。
所有操作都是按照雙重鏈接列表的需要執行的。在列表中編索引的操作將從開頭或結尾遍歷列表(從靠近指定索引的一端)。
定義:public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable
// LinkedList 構造方法摘要
LinkedList() // 構造一個空列表。
LinkedList(Collection<? extends E> c) // 構造一個包含指定 collection 中的元素的列表,這些元素按其 collection 的迭代器返回的順序排列。
// LinkedList 特有方法
void addFirst(E e) // 將指定元素插入此列表的開頭。
void addLast(E e) // 將指定元素添加到此列表的結尾。
E getFirst() // 返回此列表的第一個元素。
E getLast() // 返回此列表的最後一個元素。
// 獲取元素,但是不刪除元素
E removeFirst() // 移除並返回此列表的第一個元素。
E removeLast() // 移除並返回此列表的最後一個元素。
// 獲取元素,並且刪除元素
/*
當列表中沒有元素的時候,無論是 get 還是 remove 都會報出 NoSuchElementException 異常,
後期升級之後,在JDK1.6版本之後出現了新的方法,如果列表爲空,取不到元素,返回 null
*/
// 升級後方法
boolean offerFirst(E e) // 在此列表的開頭插入指定的元素。
boolean offerLast(E e) // 在此列表末尾插入指定的元素。
E peekFirst() // 獲取但不移除此列表的第一個元素;如果此列表爲空,則返回 null。
E peekLast() // 獲取但不移除此列表的最後一個元素;如果此列表爲空,則返回 null。
E pollFirst() // 獲取並移除此列表的第一個元素;如果此列表爲空,則返回 null。
E pollLast() // 獲取並移除此列表的最後一個元素;如果此列表爲空,則返回 null。
3. Vector
Vector
類可以實現可增長的對象數組。與數組一樣,它包含可以使用整數索引進行訪問的組件。但是,Vector
的大小可以根據需要增大或縮小,以適應創建 Vector
後進行添加或移除項的操作。
定義:public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
從以下版本開始:JDK1.0
// Vector 構造方法摘要
Vector() // 構造一個空向量,使其內部數據數組的大小爲 10,其標準容量增量爲零。
Vector(Collection<? extends E> c) // 構造一個包含指定 collection 中的元素的向量,這些元素按其 collection 的迭代器返回元素的順序排列。
Vector(int initialCapacity) // 使用指定的初始容量和等於零的容量增量構造一個空向量。
Vector(int initialCapacity, int capacityIncrement) // 使用指定的初始容量和容量增量構造一個空的向量。
4. 分析
Collection
|--List:元素是有序的,元素可以重複,集合體系中包含索引。
|--Arraylist:JDK1.2
1. 底層的數據結構是數組數據結構
2. 查詢速度快,但是增刪慢
3. 線程不同步
4. 初始長度爲 10,如果長度不夠,每次擴容一半。
|--LinkedList:JDk1.2
1. 底層的數據結構是鏈表結構
2. 增刪速度快
3. 線程不同步
|--Vector:JDK1.0
1. 底層的數據結構是數組數據結構
2. 線程同步
3. 初始長度爲 10,如果長度不夠,每次擴容一倍。
|--Set:元素不可重複,元素無序(即存入順序與取出順序不一定相同)
結論:ArrayList 是 Vector 的替代類,ArrayList 是後需更新維護出現的精簡版本,使用起來更加方便。