Map放入相同的key值

因为Map本身是不可以放相同的key的,但是如果我们想,也是有办法的。
另外java也给我们提供了一个钻空子的方法,这就是JDK1.8的IdentityHashMap,也是Map的一个实现类
HashMap比较key的值是用equals来比较的,所以只要key的值一样,就会被认为是同一个key。而IdentityHashMap是用==来比较key的存放地址,所以,只要我们重新new出来一个对象,就可以把值相同的key定义为值相等但地址不相同的key,这样就不会被认为是同一个key

public class MapTest {
	
	public static void main(String[] args) {
		Map map = new IdentityHashMap();
		
		map.put(new Integer(1), "tom");
		map.put(new Integer(1), "ben");
		map.put(new Integer(1), "cat");
		map.put(new Integer(1), "dog");
		
		System.out.println(map);
	}

}

输出结果是:
{1=tom, 1=dog, 1=cat, 1=ben}

另外HashMap还可以自己重写hashCode和put来实现hashCode的值不一样,从而不会被认为是同一个key,继续研究。。。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值