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()方法用来判断对象的相等性 |