List接口
List是有序的Collection。Java List一共三個實作類:分别是ArrayList、Vector和LinkedList。![]()
Java集合架構 - List接口
一、Vector類
特點 :
1. 排列有序,可重複
2. 底層使用數組
3. 擷取元素速度快,增删慢
4. 線程安全,效率低
5. 當容量不夠時,Vector預設擴充一倍容量
和ArrayList不同,Vector中的操作是線程安全的,即某一時刻隻有一個線程能夠寫Vector,避免多線程同時寫而引起的不一緻,但實作同步需要很高的花費,是以,通路它比通路ArrayList慢!
- 源碼分析 : List接口 — Vector類源碼分析
- Vector類中方法的比較 : toArray()和toArray(T[ ] a)的比較 - Vector類
二、Stack類
Stack類繼承Vector類
該類通過數組來實作一個堆棧(LIFO:last-in-first-out).類中方法可以實作棧的基本操作.
讀懂了Vector源碼的話,在看Stack類的源碼就so easy!
Stack類隻是封裝了幾個方法.
- 源碼分析 : Stack類的介紹
三、ArrayList類
特點:
1. 排列有序,可重複
2. 底層使用數組
3. 查找速度快,增删慢
4. 線程不安全
5. 當容量不夠時,ArrayList增加容量為目前容量/2 + 1
差別:
1. 類中的方法與Vector類形式有些類似.
2. 兩個類中,ArrayList類線程是不安全的,是以速度也會比Vector類快.
3. 其中兩者在底層數組擴容也是不同的,ArrayList類的擴容方式更加注重效率,由于添加了一個預設容量數組,進而使在使用空構造函數建立對象時,第一次添加元素時将擴容大小設定為10.
- 源碼分析 : List接口 — ArrayList類源碼分析
- ArrayList類中周遊方式 : ArrayList集合周遊的七種方式(其他類相同形式)
四、LinkedList類
特點:
1. 排列有序,可重複
2. 底層使用雙向循環連結清單資料結構
3. 查詢速度慢,增删快
4. 線程不安全
LinkedList是用連結清單結構存儲資料的,很适合資料的動态插入和删除.還提供了List接口中沒有定義的方法,專門用于操作表頭和表尾的元素,可以當作堆棧、隊列和雙向隊列使用.