您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

性能get()取决于两件事:

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

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

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

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

其他 2022/1/1 18:30:29 有529人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶