關於java集合的實現細節

2021-09-02 20:17:42 字數 1125 閱讀 3158

集合元素在記憶體中的儲存機制!!!!!!!

hashmap的hash儲存機制,treemap的紅黑樹儲存機制,hashset的底層就是hashmap,treeset的底層就是treemap,arraylist陣列儲存機制,linkedlist鍊錶儲存機制,

map-------entry----hashmap/hashset   treemap/treeset

hashmap使用hash表+鍊錶來儲存關聯陣列,hashmap中有乙個內部類entry(key-value),hash表+鍊錶儲存的就是乙個個entry例項,將所有的entry例項的value置為null,則hashmap變為hashset。儲存entry例項時,只是根據key的hashcode值來決定儲存位置。hash表的桶中存放的是entry例項啊,當hashmap的每個桶中之儲存乙個entry時,即沒有通過指標產生entry鏈時,hashmap具有最好的效能。在發生hash衝突時,單個bucket中儲存的時乙個entry鏈,。

hashset的實現只是封裝了乙個hashmap物件來儲存所有的集合元素,所有放入hashset中的元素實際上都是由hashmap的key來儲存,而hashmap的value只是儲存了乙個靜態的object物件

hashmap底層

hashmap在底層使用key-value對當成乙個整體進行處理,這個整體就是乙個entry物件,hashmap底層使用乙個entry陣列來儲存所有的key-value對,當需要儲存乙個entry物件時,會根據hash演算法來決定其儲存位置,當需要取出乙個entry時,也會根據hash演算法來找到其儲存位置,

當建立hashmap時,有乙個預設的負載因子,預設值為0.75,。負載因子是時間和空間上的折中,負載因子大,則hash表佔記憶體空間小,查詢時間大,負載因子小,則hash表佔記憶體空間大,查詢時間小,

treemap,每個entry都被當成乙個紅黑樹節點來對待,,treemap中的所有entry總是按key的排列順序來保持有序狀態,

紅黑樹==自平衡二叉查詢樹

list-----arraylist/linkedlist/vector/stack

arraylist底層用陣列實現儲存,執行緒不安全

linkedlist底層使用雙向鍊錶來實現儲存,執行緒不安全

vector/stack底層用陣列實現儲存,,執行緒安全

Java集合類Hashtable實現細節

hashtable的api對外提供了許多方法,這些方法能夠很好幫助我們操作hashtable,但是這裡我只介紹兩個最根本的方法 put get。首先我們先看put方法 將指定key對映到此雜湊表中的指定value。注意這裡鍵key和值value都不可為空。put方法的整個處理流程是 計算key的ha...

關於CSS細節集合 二

show li.s1 show li.s2 很多ie6 或ie7 的問題可以用設定haslayout 值的方法來解決,最簡單的給元素設定haslayout 值的方法是給加上css 的height或width 當然,zoom也可以用,但這不是css的一部分 比如設定為height 1 如果父元素沒有設...

java集合底層實現

set和map的關係 set代表無序,不能重複的集合 map代表key value組成的集合,是一種關聯陣列。map的key要求是不能重複,沒有順序。把map的所有key組合起來就是set。setkeyset hashmap和hashset原理 hashmap底層是用陣列鍊錶儲存的,元素是entry...