ArrayList、Vector、HashMap、HashSet的默認初始容量

List 元素是有序的、可重復
ArrayList、Vector默認初始容量為10
Vector:線程安全,但速度慢
    底層數據結構是數組結構
    加載因子為1:即當 元素個數 超過 容量長度 時,進行擴容
    擴容增量:原容量的 1倍
      如 Vector的容量為10,一次擴容后是容量為20
ArrayList:線程不安全,查詢速度快
    底層數據結構是數組結構
    擴容增量:原容量的 0.5倍+1
      如 ArrayList的容量為10,一次擴容后是容量為16
Set(集) 元素無序的、不可重復。
HashSet:線程不安全,存取速度快
     底層實現是一個HashMap(保存數據),實現Set接口
     默認初始容量為16(為何是16,見下方對HashMap的描述)
     加載因子為0.75:即當 元素個數 超過 容量長度的0.75倍 時,進行擴容
     擴容增量:原容量的 1 倍
      如 HashSet的容量為16,一次擴容后是容量為32
Map是一個雙列集合
HashMap:默認初始容量為16
     (為何是16:16是2^4,可以提高查詢效率,另外,32=16<<1?????? -->至于詳細的原因可另行分析,或分析源代碼)

     加載因子為0.75:即當 元素個數 超過 容量長度的0.75倍 時,進行擴容
     擴容增量:原容量的 1 倍
      如 HashSet的容量為16,一次擴容后是容量為32

TreeMap和TreeSet原理

TreeMap底層是用紅黑樹來存儲,每個Entry對應樹的一個節點,TreeMap元素默認從小到大排序。V put(Key k, Value v)實質是二叉排序樹的插入算法

Set和Map的關系

Set代表無序,不能重復的集合;Map代表Key-Value組成的集合,是一種關聯數組。Map的Key要求是不能重復,沒有順序。把Map的所有Key組合起來就是Set。Set keySet();

Vector和ArrayList區別

Vector提供synchronized修飾方法,是線程安全版本的ArrayList

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容