OpenJDK 源代码阅读之 HashMap
概要
- 类继承关系
|
|
- 定义
|
|
- 核心成员变量
|
|
- 内部节点
|
|
- 要点
1) 与 Hashtable 区别在于:非同步,允许 null
2) 不保证次序,甚至不保证次序随时间不变
3) 基本操作 put, get 常量时间
4) 遍历操作 与 capacity+size 成正比
5) HashMap 性能与 capacity
和 load factor
相关,load factor
是当前元素个数与 capacity
的比值,通常设定为 0.75
,如果此值过大,空间利用率高,但是冲突的可能性增加,因而可能导致查找时间增加,如果过小,反之。当元素个数大于 capacity * load_factor
时,HashMap
会重新安排 Hash 表。因此高效地使用 HashMap
需要预估元素个数,设置最佳的 capacity
和 load factor
,使得重新安排 Hash 表的次数下降。