1 IdentityHashMap类简介
IdentityHashMap实现类的实现机制与HashMap基本相似,但它在处理两个key相等时比较独特:在IdentityHashMap中,当且仅当两个key严格相等(key1 == key2)时,IdentityHashMap才认为两个键相等。
2 代码示例
import java.util.*;
public class IdentityHashMapTest
{
public static void main(String[] args)
{
IdentityHashMap ihm = new IdentityHashMap();
// 下面两行代码将会向IdentityHashMap对象中添加两个key-value对
ihm.put(new String("语文") , 89);
ihm.put(new String("语文") , 78);
// 下面两行代码只会向IdentityHashMap对象中添加一个key-value对
ihm.put("java" , 93);
ihm.put("java" , 98);
System.out.println(ihm);
}
}
3 运行结果
{语文=89, java=98, 语文=78}
4 代码分析
上面代码试图向IdentityHashMap对象添加4个key-value对,前2个key-value对中的key是新创建的字符串对象,他们通过==比较不相等,所以IdentityHashMap会把他们当成2个key来处理;后2个key-value对中的key都是字符串直接量,所以他们通过==比较返回true,IdentityHashMap会认为是同一个key,因此只有1次可以添加成功。