java 常用map的比較

2021-05-21 10:26:58 字數 2446 閱讀 2601

最近改**的時候想要找乙個get 和 put 方法效率比較的map,所以常看了1.6的api,現作出如下的比較:

linkedhashmap

hashmap

treemap

identityhashmap

enummap

實現原理

1.

雙向列表和

hash

2.維護了乙個

key的雙向列表

3.hash

紅黑樹使用引用相等的比較法則,而不是物件相等,也就是引用的要是記憶體中的統一實體地址

chaining hash

實現(http://oopweb.com/algorithms/documents/plds210/volume/hash_tables.html)1.

key的值必須是統一個列舉型別

2.陣列實現

執行緒安全

否否否否

元素的順序

1.

key的遍歷順序就是插入的順序

2.重新插入同乙個

key值是不會影響它的位置

3.元素的順序不一定一直一樣

插入的元素都是按一定順序排序的,可自定義比較的方法

元素的順序不一定一直一樣

元素的順序萬為列舉型別宣告的順序

一致性

iterator

被建立後,除了通過

iterator

的方法修改

map,其他形式的修改都會導致

iterator

報concurrentmodificationexception

的異常,但是這個也不是可靠的

iterator

被建立後,除了通過

iterator

的方法修改

map,其他形式的修改都會導致

iterator

報concurrentmodificationexception

的異常,但是這個也不是可靠的

iterator

被建立後,除了通過

iterator

的方法修改

map,其他形式的修改都會導致

iterator

報concurrentmodificationexception

的異常,但是這個也不是可靠的

iterator

被建立後,除了通過

iterator

的方法修改

map,其他形式的修改都會導致

iterator

報concurrentmodificationexception

的異常,但是這個也不是可靠的

建立iterator

後改變map

的值,也不會有異常,一致性不能保證

key

value

的取值

允許

key

和value

為null 允許

key

和value

為null

key不允許為

null

,value

可以是null 允許

key

和value

為null

不允許key

為null

,value

可以為null

其他

用這個map重新生成乙個

key順序一樣的

map,不管這個

map的實現是什麼,如

(new linkedhashmap(***map)),

這樣生成的

map元素順序和原來一致

1.初始的容量和負載因子影響效能,預設的負載因子是

0.75

,增大這個值減少了使用的空間,但是增加了

get

和set

的時間2.

get

和put

的時間複雜度為

o(1) 1.

get put remove

的時間複雜度為

o(log(n)) 1.

map的大小是重要的效能指標,如果超過

map最大的範圍,那麼要花很大的代價去加長這個

map 2.

比hashmap

效能好

java中Map的常用方法

map是以鍵值對的方式儲存資料的集合,鍵不可以重複,每個鍵只能對應乙個值 containskey object key containsvalue object value 判斷map中是不是含有相應的key,value entryset 返回map中的對映關係的set檢視set 可以理解為是將ma...

java中的Map以及常用子類

map 主要用於儲存健值對,根據鍵得到值,因此不允許鍵重複 重複了覆蓋了 但允許值重複。hashmap 根據鍵的 hashcode 值儲存資料 根據鍵可以直接獲取它的值,具有很快的訪問速度,遍歷時,取得資料的順序是完全隨機的。hashmap 最多隻允許一條記錄的鍵為 null 允許多條記錄的值為 n...

map和hash map的比較

hash map和map的區別在 建構函式。hash map需要hash函式,等於函式 map只需要比較函式 小於函式 儲存結構。hash map採用hash表儲存,map一般採用紅黑樹 rb tree 實現。因此其記憶體資料結構是不一樣的。什麼時候需要用hash map,什麼時候需要用map?ha...