加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 为什么hashmap比hashset快?

发布时间:2020-12-14 16:48:04 所属栏目:Java 来源:网络整理
导读:我一直在阅读/搜索为什么hashmap比hashset快的原因 我不太了解以下声明. HashMap比hashset快,因为这些值与唯一键相关联 在HashSet中,成员对象用于计算哈希码值 对于两个对象相同,所以等于()方法用于检查是否相等 返回false表示两个对象不同. 在HashMap中,使
我一直在阅读/搜索为什么hashmap比hashset快的原因

我不太了解以下声明.

> HashMap比hashset快,因为这些值与唯一键相关联
>在HashSet中,成员对象用于计算哈希码值
对于两个对象相同,所以等于()方法用于检查是否相等
返回false表示两个对象不同.
在HashMap中,使用关键对象计算哈希码值.
>哈希映射哈希码值是使用密钥对象计算的
这里的成员对象用于计算可以相同的哈希码值
对于两个对象,如此等号(??)方法用于检查是否相等
返回false表示两个对象不同.

所以让我结束我的问题

>我以为hashmap和hashset是以相同的方式计算哈希码,为什么
不同?
>你可以提供一个具体的例子哈希集和哈希马克如何计算哈希码
不同?
>我知道什么是关键对象,但是成员对象是什么意思?
> HashMap可以做一些与hashset和更快的东西.为什么我们需要hashset?
例:

HashMap <Object1,Boolean>= new HashMap<Object1,boolean>();
map.put("obj1",true);  => exist
map.get("obj1");  =>if null = not exist,else exist

解决方法

性能:

如果您查看HashSet的源代码(至少为JDK 6),则在内部使用HashMap,因此它基本上完全符合您在使用示例代码所做的工作.

所以,如果你需要一个Set实现,你可以使用HashSet,如果你需要一个Map – HashMap.使用HashMap代替HashSet的代码将具有与直接使用HashSet完全相同的性能.

选择正确的集合

地图 – 将键映射到值(关联数组) – http://en.wikipedia.org/wiki/Associative_array.

Set – 不包含重复元素的集合 – http://en.wikipedia.org/wiki/Set_(computer_science).

如果你需要的唯一的东西是检查一个元素是否存在 – 使用Set.您的代码将更清晰,更易于理解.

如果您需要为您的元素存储一些数据 – 使用地图.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读