我一直在阅读/搜索为什么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.您的代码将更清晰,更易于理解.
如果您需要为您的元素存储一些数据 – 使用地图.