List集合的概念和ArrayList類的源碼解析
List集合(重中之重)
基本概念:
- java.util.List集合是Collection集合的子集合,該集合中允許有重複的元素並且有先後放入次序。
- 該集合的主要實現類有:ArrayList類、LinkedList類、Stack類、Vector類。
- 其中ArrayList類的底層是採用動態數組進行數據管理的,支持下標訪問,增刪元素不方便。
- 其中LinkedList類的底層是採用雙向鏈表進行數據管理的,訪問不方便,增刪元素方便。
- 可以認爲ArrayList和LinkedList的方法在邏輯上完全一樣,只是在性能上有一定的差別,ArrayList
更適合於
- 機訪問而LinkedList更適合於插入和刪除;在性能要求不是特別苛刻的情形下可以忽略這個差別。
- 其中Stack類的底層是採用動態數組進行數據管理的,該類主要用於描述一種具有後進先出特徵的
數據結構,叫做棧(last in fifirst out LIFO)。
- 其中Vector類的底層是採用動態數組進行數據管理的,該類與ArrayList類相比屬於線程安全的
類,效率比較低,以後開發中基本不用。
常用方法:
Stack類:
其中Stack類的底層是採用動態數組進行數據管理的,該類主要用於描述一種具有後進先出特徵的
數據結構,叫做棧(last in fifirst out LIFO)
Vector類:
其中Vector類的底層是採用動態數組進行數據管理的,該類與ArrayList類相比屬於線程安全的
類,效率比較低,以後開發中基本不用。(擴容:擴大2倍,ArrayList擴大1.5倍)
其中subList中,子類集合和當前集合共用同一塊內存空間。
Queue類
基本概念:
- java.util.Queue集合是Collection集合的子集合,與List集合屬於平級關係。
- 該集合的主要用於描述具有先進先出特徵的數據結構,叫做隊列(fifirst in fifirst out FIFO)。
- 該集合的主要實現類是LinkedList類,因爲該類在增刪方面比較有優勢。
常用方法: