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