
的性能
get()取决于两件事:
- 参数键对象
hashCode()
方法的性能 - 现有关键对象
equals()
方法的性能
看看的文档
HashMap.get()。映射包含键值对。为了找到正确的键值,使用了键的
equals()方法。在中
HashMap,要比较的键数通过使用哈希值来减少。因此
hashCode(),在您作为参数传递的键对象上仅执行一次。
然后,的实现
HashMap有几个可能要比较的关键对象(理想情况下只有一个)。这意味着它必须执行
equals()1到n次。
如果您具有
Setas键类型,则两者都会更复杂,因为它们会迭代
Set自身中包含的所有对象。看看执行的
equals()和
hashCode()的
HashSet和比较它的那些
String。
以您的示例为例:由于
hashCode()恰好执行一次,因此其影响比少
equals()。在第一个块中,您需要对其进行一次计算
HashSet,然后
get()再次对其进行计算
Integer(这实际上并不那么复杂)。这在
hashCode()零件上没有多大区别。第一个块要快得多,因为
equals()执行的是
Integer代替
HashSet,它要快得多。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)