Java HashObjObjMap<;K、 V>;vs HashMap<;K、 V>;

Java 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

Koloboke
HashObjObj
和Java util
HashMap
之间有什么区别

我知道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
(原始)。你可以用它