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

标签 java hashmap koloboke

Koloboke HashObjObj<K, V> 有什么区别和 Java 实用程序 HashMap<K, V>

我知道 Koloboke 提供的性能,但在某些情况下 K/V 可能会变成整数/长整型。一般来说,如果知道HashLongObjMap会推荐,但是当 K/V 作为泛型出现时会发生什么。据我了解,使用 HashLongObjMap使用long原始作为关键,但是当 HashObjObjMap<Long, V> 时出现什么差异?使用过吗?

例如:

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

对比

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在内部,因为他们的契约(Contract)略有不同,例如。 G。后者不能容纳null key 。另外,如果您需要的话,我认为它没有多大意义 long您应该明确使用 HashLongObjMap 的键你自己而不是 HashObjObjMap并依赖于一些隐式的“优化”。

关于Java HashObjObjMap<K, V> 与 HashMap<K, V>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35316243/

相关文章:

java - args 的运算符未定义

java - 树状图奇怪的行为

java - 参差不齐的双二维数组的平均值

java - Java中是否可以使用Hashmap存储同一个类的不同实例?

java - 修改 Koloboke Hashmap 时对其进行迭代

java - 在 Koloboke 集之间复制时出现性能问题

java - 如何在java中实现chrome原生消息处理协议(protocol)

javascript - JavaScript 是否允许为对象字段设置键?

java - 键为字符串、值为包含元素迭代问题的 ArrayList 的 Hashmap