HashMap通过简单而复杂的键获得性能

HashMap通过简单而复杂的键获得性能,第1张

HashMap通过简单而复杂的键获得性能

的性能

get()
取决于两件事:

  • 参数键对象
    hashCode()
    方法的性能
  • 现有关键对象
    equals()
    方法的性能

看看的文档

HashMap.get()
。映射包含键值对。为了找到正确的键值,使用了键的
equals()
方法。在中
HashMap
,要比较的键数通过使用哈希值来减少。因此
hashCode()
,在您作为参数传递的键对象上仅执行一次。

然后,的实现

HashMap
有几个可能要比较的关键对象(理想情况下只有一个)。这意味着它必须执行
equals()
1到n次。

如果您具有

Set
as键类型,则两者都会更复杂,因为它们会迭代
Set
自身中包含的所有对象。看看执行的
equals()
hashCode()
HashSet
和比较它的那些
String

以您的示例为例:由于

hashCode()
恰好执行一次,因此其影响比少
equals()
。在第一个块中,您需要对其进行一次计算
HashSet
,然后
get()
再次对其进行计算
Integer
(这实际上并不那么复杂)。这在
hashCode()
零件上没有多大区别。第一个块要快得多,因为
equals()
执行的是
Integer
代替
HashSet
,它要快得多。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5623345.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-15

发表评论

登录后才能评论

评论列表(0条)

    保存