ArrayList、LinkedList、Vector對比

一、整體對比

ArrayList

  • ​ 存儲方式:底層是使用 Object[] 存儲的
  • ​ 插入和刪除的效率:插入和刪除元素的效率低
  • ​ 擴容機制:默認擴容至原來的 1.5 倍
  • ​ 線程安全:線程不安全(可以使用 Collections 的 synchronizedList 來保證線程安全)

Vector :(已經不用了)

  • ​ 存儲方式:底層是使用 Object[] 存儲
  • ​ 插入和刪除的效率:插入和刪除元素的效率低
  • ​ 擴容機制:默認擴容至原來的 2 倍
  • ​ 線程安全:線程安全

LinkedList

  • ​ 存儲方式:底層是使用雙向鏈表存儲的
  • ​ 插入和刪除的效率:插入和刪除元素的效率高

二、ArrayList 底層源碼分析

JDK 1.7 JDK 1.8
空參構造器 創建了一個長度爲 10 的 Object 數組 創建了一個空的 Object 數組,
在第一次添加元素時才創建了一個長度爲 10
的 Object 數組
擴容 擴容至原來的 1.5 倍 擴容至原來的 1.5 倍

結論:
1、如果提前知道了要存儲的元素個數,就使用帶參的構造器來創建,可以提高效率;

​2、JDK 8 中的創建方式可以避免造好了 ArrayList 後長時間沒有使用浪費內存。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章