KolobokeHashObjObj<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();
HashObjObjMap
和之间的区别java.util.HashMap
是算法和行程内存布局。HashObjObjMap
是具有线性探测的开放式地址哈希表,将键和值以散列的Object[]
顺序存储在同一平面数组中:[key1,value1,key2,value2,...]。Entry
对象不存在,仅在Map
API要求(即entrySet()
迭代)时才创建对象。HashMap
是具有单独链接的哈希表,键和值存储在单独的Entry
对象中。
HashLongObjMap
将密钥存储为基本类型long
s,HashObjObjMap
具有普通Object
密钥。
HashObjObjMap<Long, V>
不能HashLongObjMap
内部调用,因为它们的合同略有不同,例如,后者不能持有null
密钥。同样,我也没有多大意义,如果您需要long
密钥,则应该明确地使用HashLongObjMap
自己而不是HashObjObjMap
依靠一些隐式的“优化”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句