1 概述
HashMap | HashSet |
---|---|
实现了Map接口 | 实现了Set接口 |
存储键值对 | 存储对象 |
调用put()添加元素 | 调用add()添加元素 |
使用键(Key)计算hashcode | 使用成员对象计算hashcode |
HashMap较HashSet快 | HashSet较HashMap慢 |
2 为什么说HashMap比HashSet快?
- HashMap和HashSet都要计算hashcode,但考虑到HashMap的键的性质——它通常是Integer或String,而Integer和String计算哈希码的速度比整个对象的计算哈希码要快得多;
- 如果HashMap的键与存储在HashSet中的对象是相同的类型,则性能没有真正的区别;
- 造成区别的原因在于HashSet的键是哪种类型的对象;