java – 为什么hashmap比hashset快?

前端之家收集整理的这篇文章主要介绍了java – 为什么hashmap比hashset快?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在阅读/搜索为什么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.您的代码将更清晰,更易于理解.

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

原文链接:https://www.f2er.com/java/124231.html

猜你在找的Java相关文章