文章目录
HashMap API 所有翻译,请查看翻译目录。
静态常量
1. 默认初始容量
默认初始容量-必须是2次幂。(aka = also known as = 亦称为;别名 )
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;// aka 16
2. 最大容量
如果任何一个具有参数的构造函数隐式指定了(is implicitly specified by)一个更大的值,则使用的该最大容量。必须是2次幂<= 1<<30
。
static final int MAXIMUM_CAPACITY = 1 << 30;
3. 默认装载因子
在构造函数中未指定加载因子时使用。
static final float DEFAULT_LOAD_FACTOR = 0.75f;
4. 空表
一个空表实例,以便在表没有膨胀时共享。
static final Entry<?,?>[] EMPTY_TABLE = {};
5. 备选哈希阈值默认值
map容量的默认阈值,在此阈值之上,字符串键使用可选哈希。可选哈希降低了由于字符串键的弱哈希代码计算而导致的冲突发生率。
通过定义系统属性jdk.map.althash.threshold
可以覆盖此值。属性值1强制始终使用可选哈希,而-1值确保从不使用可选哈希。
static final int ALTERNATIVE_HASHING_THRESHOLD_DEFAULT = Integer.MAX_VALUE;
成员变量
1. table
表,根据需要调整大小。长度必须总是2次幂。
transient Entry<K,V>[] table = (Entry<K,V>[]) EMPTY_TABLE;
2. size
该map中包含的key-value对的数量。
transient int size;
3. threshold 阈值
用于调整大小的下一个 size 值,(capacity * load factor) 。
int threshold;
4. loadFactor
装载因子
该哈希表的装载因子。
如果table == EMPTY_TABLE
,那么这是膨胀时创建表的初始容量。
final float loadFactor;
5. modCount
结构化修改次数
该HashMap
已被结构化修改的次数。结构化修改是指改变HashMap
中映射的数量,或者以其他方式修改其内部结构(比如,rehash
)的修改。该字段用于使该HashMap
的集合视图上的迭代器们快速失败。(参见ConcurrentModificationException
)
transient int modCount;
6. entrySet 视图
private transient Set<Map.Entry<K,V>> entrySet = null;