HashSet HashMap 性能比较(为什么HashMap更快)

看到这样一张对比表的时候,我是懵逼的,HashSet 的操作,基本上都是直接调用底层 HashMap 的相关方法来完成,怎么就轻描淡写地来了句 HashSet 较 HashMap 来说比较慢呢?

通过面向浏览器编程,可算找到了一个靠谱的解释。

它们都必须计算hashcode,但请考虑HashMap键的性质--它通常是一个简单的String,甚至是一个Integer。计算它的hashcode要比整个对象的默认hashcode计算快得多。如果HashMap的键与存储在HashSet中的键是同一个对象,那么在性能上就不会有真正的差别。区别在于HashMap的键是什么类型的对象。

参考与感谢

https://stackoverflow.com/questions/16278995/why-is-hashmap-faster-than-hashset

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
HashSetHashMap都是Java集合框架中的容器类,它们之间有一些区别。 HashSet是基于HashMap实现的,它只存储了key,并且key不会重复,使用HashSet可以达到去重的效果。在HashSet内部,它的元素是无序的,因为它是通过哈希算法来存储和访问元素的。 而HashMap是一种键值对的映射表,它存储了key和value,key不会重复,而value可以重复。HashMap内部使用哈希表来存储和访问元素,它根据key的哈希值来确定元素在哈希表中的位置。HashMap是无序的,因为它并不维护元素的插入顺序。 相比之下,LinkedHashMap也是基于HashMap实现的,它在HashMap的基础上维护了一个双向链表来记录元素的插入顺序。因此,LinkedHashMap可以保持元素的插入顺序,它是有序的。 总结起来,HashSet适用于需要去重的场景,HashMap适用于需要通过键值对来进行查找的场景,而LinkedHashMap适用于需要保持元素插入顺序的场景。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [HashMapHashSet](https://blog.csdn.net/m0_67683346/article/details/126068054)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [JavaHashSetHashMap的区别_动力节点Java学院整理](https://download.csdn.net/download/weixin_38732744/12781399)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值