java集合框架理解知識點

2021-09-05 10:02:30 字數 1096 閱讀 2215

hashmap:是key-value樣式

底層是陣列加鍊表的樣式,後面改為陣列+鍊錶+紅黑樹的儲存方式

陣列是主體,如果本身建立的時候沒有指定大小則預設大小為16。

得到key值對應的hashcode,運用位與運算計算該key值對應的陣列下表,迴圈該位置的鍊錶,使用eques方法比較鍊錶中的key值,如果找到跟輸入的key相同的值,則替換value值為新的value值,如果沒找到,則在鍊錶中插入。

當容量到大閾值,即陣列大小*負載因子,則需要擴容,將擴充套件為當前陣列容量的2倍。將原來的元素通過計算新的雜湊值雜湊到新生成的陣列上(陣列的每個元素也叫桶)

當初始化hashmap容量的時候,初始化的是陣列的大小

當鍊表長度為8時轉換為紅黑樹,當桶中元素小於等於6時會轉換為鍊錶

hashset:不重複的無需集合

hashset的底層就是hashmap結構,向hashset中插入的值,就是hashmap中的key值,因為,hashmap中的key值不能重複,所以hashset是不能重複的集合,因為hashmap中的元素是無序的,所以hashset中的值也是無序的

arraylist:有序可以重複集合

arraylist底層是陣列,預設大小是10,陣列大小不夠用時,是將陣列擴容成目前容量的1.5倍。然後將久陣列的元素挪到新陣列中。使用arrays.copyof();方法

當想固定位置插入元素的時候,是將該位置的值向後挪一位,刪除某個位置的值的時候,是將該位置後面的值向前挪一位

因為底層是陣列,所以元素可以重複,且有序

linkedlist:有序的可重複的集合

linkedlist底層是雙向迴圈鍊錶且頭節點中不存放值,沒有長度的概念,沒有初始化的預設大小

插入時,預設插入到最後一位,刪除時,需要遍歷與需要刪除字段相同的值

當刪除固定位置時,先判斷該位置與size/2的大小,如果比size/2大,則從size/2的位置開始遍歷,如果比size/2小,則從0開始遍歷

hashtable的方法都使用synchronize修飾,效率底下

concureenthashmap執行緒安全的hashmap

volatile int sizectl;控制狀態,如果小於0表名正在初始化,則執行緒阻塞,否則cas更換更換

Java集合知識點總結

list有序且允許元素重複。map也屬於集合系統,但和collection介面沒關係。map是key對value的對映集合,其中key列就是乙個集合。key不能重複,但是value可以重複。sortedset和sortedmap介面對元素按指定規則排序,sortedmap是對key列進行排序。has...

java集合幾個知識點

1.arraylist在預設容量是10,每次進行add的時候會檢查容量,如果需要擴容則增加1.5倍,如果仍然小,則設為增加後的長度大小 2.copyonwritearraylist 保證執行緒安全的方法是 不對讀進行限制,寫的操作加重入鎖,寫的時候拷貝乙份陣列,並將新資料寫入,完成後再將引用返回。重...

Java集合知識點梳理

由collection介面派生的兩個介面是list和set,都可以使用迭代器來遍歷,它們都實現了iterator介面 一.list 實現list介面的常用類有linkedlist,arraylist,vector和stack,list允許有相同的元素。arraylist 基於陣列方式實現,無容量的限...