Java HashObjObjMap<;K、 V>;vs HashMap<;K、 V>;
KolobokeJava HashObjObjMap<;K、 V>;vs HashMap<;K、 V>;,java,hashmap,koloboke,Java,Hashmap,Koloboke,KolobokeHashObjObj和Java utilHashMap之间有什么区别 我知道Koloboke提供的性能,但可能存在K/V为整数/长的实例。通常,如果已知,建议使用HashLongObjMap,但当K/V作为泛型出现时会发生什么。据我所知,使用HashLongObjMap使用long原语作为键,但使用HashObjObjMap时有什么区别 例如: HashLongObjMap map1=HashLongObjMap.newImmutableMap() Vs HashObjObjMa
HashObjObj
和Java utilHashMap
之间有什么区别
我知道Koloboke提供的性能,但可能存在K/V为整数/长的实例。通常,如果已知,建议使用HashLongObjMap,但当K/V作为泛型出现时会发生什么。据我所知,使用HashLongObjMap
使用long
原语作为键,但使用HashObjObjMap
时有什么区别
例如:
HashLongObjMap map1=HashLongObjMap.newImmutableMap()代码>
Vs
HashObjObjMap map2=HashObjObjMap.newImmutableMap()代码>
HashObjObjMap
和java.util.HashMap
之间的区别在于算法和内部内存布局HashObjObjMap
是一个具有线性探测功能的开放式寻址哈希表,将键和值以分散顺序存储在同一平面Object[]
数组中:[key1,value1,key2,value2,…]<代码>条目
对象不存在,它们仅在Map
API(即entrySet()
iteration)需要时创建HashMap
是一个具有单独链接的哈希表,键和值存储在单独的Entry
对象中
HashLongObjMap
将键存储为原语long
s,HashObjObjMap
具有普通的对象
键
HashObjObjMap
无法在内部调用HashLongObjMap
,因为它们的约定略有不同,例如。G后者不能持有null
键。另外,我也不认为这有什么意义,如果你需要long
键,你应该自己显式地使用HashLongObjMap
而不是hashbobjmap
并依赖一些隐式的“优化”。@assylias:似乎使用hashbobjmap
会影响性能,即使K是long
。如果K
是其中一种数据类型,库本身是否有办法调用HashLongObjMap
或HashIntObjMap
?也许我会尝试寻找一种方法。这样需要它,因为它不能保证钥匙会很长<代码>它可能是短的、整数的、字节的等等
。使用Obj覆盖所有情况会影响性能,但使用long for all是另一种选择。但是数据集是巨大的,所以我愿意保持它的灵活性。在方法的中间是需要的。接口/抽象类和单独的实现由于大量的排列和其他相关的限制,使得它太复杂了。我不认为ObjObj作为LongObj解析将如何解决这个问题。所有LongObj、IntObj和ShortObj映射的公共基础只是java.util.Map
(原始)。你可以用它