HashMap和HashSet的区别
学习源码,是再正确不过的方式了。
咱们看一下HashSet的源码,底层是基于HashMap实现的。
HashSet的源码很少,除了clone()、writeObject()、readObject() 是HashSet不得不自己实现,其他都是调用HashMap方法。
| HashMap | HashSet |
|---|---|
| 实现了Map接口 | 实现Set接口 |
| 存储键值对 | 仅存储对象 |
调用 put()向map中添加元素 |
调用 add()方法向Set中添加元素 |
| HashMap使用键(Key)计算Hashcode | HashSet使用成员对象来计算hashcode值,对于两个对象来说hashcode可能相同,所以equals()方法用来判断对象的相等性 |