List簡介
List 四種實現類
- ArrayList
- LinkeList
- Vector
- Stack
四種List的數據結構
ArrayList
動態數組,初始化分配一定長度的數組LinkeList
雙向鏈表Vector
與 ArrayList 一樣使用動態數組作為存儲結構Stack
Stack 繼承 Vector ,不同的點是 Stack 是棧而不是隊列,實現先進后出
四種List的不同使用場景的效率
四種 List 實現其實根據數據結構可以分為兩類,ArrayList,Vector,Stack 都是動態數組劃分為一類,后面一ArrayList作為代表作比較分析。另一類就用是雙向鏈表(包含當前的值和前節點和后節點e)實現 LinkedList。
根據鏈表和數組的比較,鏈表在插入,刪除操作效率更高,但是隨機讀取效率相比數組就比較低。
相反的,插入或刪除一個數據就需要更長的時間,因為被修改位置后續的坐標全都要后移一位,所以耗時較長。
源碼中可以看出,LinkedList 尋找的 index 大于List 長度的一半時,則會從后面開始讀取數據
而數組的 List 直接根據下標返回所需的元素
ArrayList 與 Vector 關于現場安全的比較
ArrayList 非現成安全,Vector 線程安全,所以在對單線程中使用 ArrayList 的效率要高于
Vector
ArrayList 的遍歷速度比較
隨機范圍的效率最高
隨機訪問 > for循環 > 遍歷器