簡體   English   中英

Java HashObjObjMap <K, V> vs HashMap <K, V>

[英]Java HashObjObjMap<K, V> vs HashMap<K, V>

Koloboke HashObjObj<K, V>和Java util HashMap<K, V>什么區別?

我知道Koloboke所提供的性能,但可能會發現K / V確實是Integer / Long。 通常,如果推薦使用已知的HashLongObjMap ,但是當K / V作為泛型進入時會發生什么。 據我了解,使用HashLongObjMap使用long原語作為鍵,但是使用HashObjObjMap<Long, V>有什么區別?

例如:

HashLongObjMap<V> map1 = HashLongObjMaps.newImmutableMap();

VS

HashObjObjMap<K, V> map2 = HashObjObjMaps.newImmutableMap();

HashObjObjMapjava.util.HashMap之間的區別是算法和行程內存布局。 HashObjObjMap是一個帶有線性探測的開放式哈希表,將鍵和值以散列的順序存儲在同一平面Object[]數組中:[key1,value1,key2,value2,...]。 Entry對象不存在,僅在Map API需要時(即entrySet()迭代)創建它們。 HashMap是具有單獨鏈接的哈希表,鍵和值存儲在單獨的Entry對象中。

HashLongObjMap將鍵存儲為原始long ,而HashObjObjMap具有普通的Object鍵。

HashObjObjMap<Long, V>無法HashLongObjMap內部調用HashLongObjMap因為它們的合同略有不同,例如后者不能持有null鍵。 同樣,我也沒有多大意義,如果您需要long鍵,則應該自己顯式使用HashLongObjMap而不是HashObjObjMap並依靠一些隱式的“優化”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM