OpenJDK 源代码阅读之 HashSet
概要
- 类继承关系
| 
 | 
 | 
- 定义
| 
 | 
 | 
- 要点
- 不保证元素次序,甚至不保证次序不随时间变化
- 基本操作(add, remove, contains, size)常量时间
- 迭代操作与当前元素个数加底层容量大小成正比
- 不保证同步
思考
- 总体实现
底层是用 HashMap 实现的,Set 中的数据是 HashMap 的 key,所有的 key 指向同一个 value, 此 value 定义为:
| 
 | 
 | 
再看一下 add,大概就能明白了
| 
 | 
 | 
- load factor
| 
 | 
 | 
初始化中,注意使用的 HashMap 的 load factor 设置为 0.75,如果太小,就设置成 16. 
HashSet 并没有什么特别之处,几乎没有自己特有的实现,都是调用 HashMap 的方法实现相应的功能。