1. 程式人生 > >集合底層實現原理

集合底層實現原理

ArrayList 

底層實現原理是陣列。

因為陣列是定長的,所以在最初的時候建立了一個初始化長度預設16的基礎陣列,加素因子預設是0.75。可儲存長度為16*0.75=12。

當儲存資料達到12的時候,陣列會內部操作建一個更長的陣列,將現在陣列的資料拷入新的陣列。

所以就完成了動態新增且不定長度的原因。

LinkedList

底層實現原理是連結串列

連結串列本身可以自動增長的,所以是利用連結串列的特性直接完成動態長度的。

Hashset

底層實現是連結串列和陣列的結合體(對應關係是Map鍵值對的關係)。

最初是陣列的儲存的方式以及增長方式。但是陣列中存的是雜湊值。

當雜湊值相同的時候就按照連結串列的方式儲存在此雜湊值陣列的下方。

如假設String“abc” 和String“efg”雜湊值相同。

存“adc”:1,呼叫雜湊值 2,在陣列中找有沒有相同的雜湊值,如果沒有,就將此雜湊值新增到陣列中(map,鍵值對關係找到物件)。

存“efg”:1,呼叫雜湊值 2,在陣列中找到相同的雜湊值,3,用equals判斷兩個值是否相等,如果相等則重複,不新增。如果不相等,則以連結串列的方式儲存(桶儲存)