IdentityHashMap
基于动态数组实现的主键映射
目录
IdentityHashMap继承关系
IdentityHashMap实现了Serializable接口,支持序列化,可通过序列化传输
IdentityHashMap实现了Cloneable接口,覆盖了clone()方法,能被克隆
IdentityHashMap继承了AbstractMap抽象类,拥有Map的基本操作
IdentityHashMap源码解析
IdentityHashMap构造函数:
/**
* 构造一个空的标识散列映射, 默认大小 = 21
*/
public IdentityHashMap() {
init(DEFAULT_CAPACITY);
}
/**
* 构造具有指定的预期最大大小的新空映射
* 在映射中放入超过预期数量的键-值映射可能会导致内部数据结构增长
*
* @param expectedMaxSize the expected maximum size of the map
* @throws IllegalArgumentException if {@code expectedMaxSize} is negative
*/
public IdentityHashMap(int expectedMaxSize) {
if (expectedMaxSize < 0)
throw new IllegalArgumentException("expectedMaxSize is negative: "
+ expectedMaxSize);
init(capacity(expectedMaxSize));
}
/**
* 返回给定预期最大大小的适当容量
* 返回在MINIMUM_CAPACITY和MAXIMUM_CAPACITY之间的最小的2的幂
* 如果存在这样一个数字,则该数>(3 * maxsize)/2
* 否则返回MAXIMUM_CAPACITY
*/
private static int capacity(int expectedMaxSize) {
// assert expectedMaxSize >= 0;
return
(expectedMaxSize > MAXIMUM_CAPACITY / 3) ? MAXIMUM_CAPACITY :
(expectedMaxSize <= 2 * MINIMUM_CAPACITY / 3) ? MINIMUM_CAPACITY :
Integer.hi