IdentityHashMap 源码解析

IdentityHashMap 是一种用来保存键值对的集合,它的特殊之处在于它使用引用相等(==)来比较键值,而不是使用 equals() 方法。因此,IdentityHashMap 可以用来检测键值的引用相等性,而不是键值的内容相等性。

1、IdentityHashMap 类的声明

下面是 IdentityHashMap 类的声明:

public class IdentityHashMap<K,V> extends AbstractMap<K,V>
    implements Map<K,V>, java.io.Serializable, Cloneable
Java

可以看到,IdentityHashMap 实现了 Map 接口,继承自 AbstractMap,实现 java.io.Serializable 和 Cloneable 接口。

2、IdentityHashMap 的构造函数

IdentityHashMap 有两个构造函数:

public IdentityHashMap()
public IdentityHashMap(int expectedMaxSize)
Java

第一个构造函数创建一个空的 IdentityHashMap,第二个构造函数接受一个 int 类型的参数,用来指定 IdentityHashMap 的初始容量。

3、IdentityHashMap 的 put() 方法

IdentityHashMap 的 put() 方法用于将键值对添加到 IdentityHashMap 中:

public V put(K key, V value)
Java

put() 方法接受两个参数,一个是键,一个是值,如果键已存在,则会替换旧值,否则会添加新的键值对。put() 方法会返回替换的旧值,如果没有替换旧值,则会返回 null。

4、IdentityHashMap 的 get() 方法

IdentityHashMap 的 get() 方法用于根据键获取值:

public V get(Object key)
Java

get() 方法接受一个参数,即要获取值的键,如果键存在,则会返回对应的值,否则会返回 null。

5、IdentityHashMap 的 remove() 方法

IdentityHashMap 的 remove() 方法用于根据键删除键值对:

public V remove(Object key)
Java

remove() 方法接受一个参数,即要删除的键,如果键存在,则会返回对应的值,否则会返回 null。

6、IdentityHashMap 的 containsKey() 方法

IdentityHashMap 的 containsKey() 方法用于检查 IdentityHashMap 中是否包含指定的键:

public boolean containsKey(Object key)
Java

containsKey() 方法接受一个参数,即要检查的键,如果键存在,则会返回 true,否则会返回 false。

7、IdentityHashMap 的 clear() 方法

IdentityHashMap 的 clear() 方法用于清空 IdentityHashMap:

public void clear()
Java

clear() 方法不接受任何参数,它会清空 IdentityHashMap 中的所有键值对。