父介面 collection子介面 list set
實現類.
arraylist linkedlist vector hashset,treeset,linkedhashset
vector底層是陣列.執行緒安全. 速度慢.
arraylist底層是陣列.
執行緒不安全,查詢比較速度,增刪比較慢.
linkedlist底層是鍊錶
執行緒不安全,增刪較快,查詢較慢.
不允許重複.訪問無序.hashset本質是hashmap中的key
treeset基於compartor -> compare方法
linkedhashset訪問有序.
jdk1.7 -> 底層是陣列 + 鍊錶.jdk1.8 -> 底層是陣列 + 鍊錶 + 紅黑樹.
jdk1.8引入紅黑樹的原因:
當出現hash衝突|碰撞時,value會掛在陣列後面的鍊錶上.當鍊表長度過長時,會導致查詢效率比較低. 在鍊錶長度大於等於8時,會從鍊錶轉換為紅黑樹,當鍊表長度小於等於6時,從紅黑樹轉為鍊錶.
jdk1.8為了實現紅黑樹,將entry包裝為node.可以旋轉變色.
hashmap是如何避免hash衝突出現的.
(h = key.hashcode()) ^ (h >>> 16)
為什麼?hashtable -> 效率太低.
所有寫方法直接變成synchronized方法.
concurrenthashmap ->
jdk1.7
陣列 + 鍊錶.
segment -> reentrantlock
初始化了長度為16的segment -> 將hashmap根據hash分散到不同的segment中.
jdk1.8
陣列 + 鍊錶 + 紅黑樹.
cas + synchronized.
當沒有hash衝突時,採用cas樂觀鎖的方式,不會鎖住hashmap,嘗試新增.
當出現hash衝突時,會使用synchronized鎖住鍊錶.
Java集合知識點梳理
由collection介面派生的兩個介面是list和set,都可以使用迭代器來遍歷,它們都實現了iterator介面 一.list 實現list介面的常用類有linkedlist,arraylist,vector和stack,list允許有相同的元素。arraylist 基於陣列方式實現,無容量的限...
Linux知識點梳理
使用者名稱 主機名 root hostname 使用者名稱 主機名稱 符號含義 當前使用者屬於root使用者 當前使用者屬於普通使用者 注意 對系統進行配置管理時,如要root使用者 檢視主機名稱 hostname設定主機名稱 hostname hadoop senior.com注意 該方式設定,當...
spring 知識點梳理
1.spring預設所有管理的bean都是單例模式 懶載入,所有的bean都是交給spring容器中的map管理,生命週期與spring相同,如果使用多例模式,bean則是交給記憶體管理,生命週期與spring無關 2.ssm分層 控制層 服務層 資料層 對應的註解分別為 controller se...