IdentityHashMap类——保证Map中元素严格相等

本文介绍了Java中的IdentityHashMap类,重点解释了其与HashMap的区别,尤其是在处理相等key时的独特机制。通过示例代码展示了如何使用IdentityHashMap,并分析了其运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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次可以添加成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值