java map key 唯一_一道关于Map的面试题:Map的key如何保证唯一

一道关于Map的面试题:Map的key如何保证唯一

前段时间面试的时候,面试官问了一些关于集合的题目,前面几个都是各大面试宝典司空见惯的题目。但问到Map集合的时候,有几个问题回答的不好。特别是被问到Map的key如果是Object时,是如何保证key是唯一的?当时完全没有读懂这道题目的问题点是什么,回答的相当不好!就这个问题来重新梳理一下Map原来忽略的一些地方。

常用Map实现类有哪些?

HashMap、HashTable、ConcurrentHashMap、TreeMap、LinkedHashMap、weakHashMap、

IdentityHashMap。

Map的key和value是否可以为空?

我使用Map的场景,key值得话一般要不是String类型,要不就是Integer类型。用Object来做key值的话,几乎是没用过,null来做过key的话,应该就更少了。代码测试下,来验证下这个问题。

public void mapTest(){

Map map = new HashMap();

map.put(null,1);

map.put(null,2);

map.put(1,1);

//map.put(null,null); for (Object obj : map.keySet()){

System.out.println("key="+obj +" value="+map.get(obj));

}

System.out.println(map);

System.out.println(map.get(null));

}

输出结果为:

key=null value=2

key=1 value=1

{null=2, 1=1}

2

从结果可以看出,HashMap的key可以为空,如果有多个key为null,那么value会被覆盖。

map.put(null,null);

System.out.println(map);

输出结果为:

{null=null}

HashMap的key和value可以同时为空

public void mapTest(){

Map map = new HashMap();

map.put(null,null);

map.put(1,null);

map.put(2,null);

for (Object obj : map.keySet()){

System.out.println("key="+obj +" value="+map.get(obj));

}

System.out.println(map);

}

输出结果为

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值