Map中key和value值是否可以为null或空字符串?

Map中key和value值是否可以为null或空字符串?

答案:

  • HashMap既支持分别为空/null,也支持key和value同时为空/null
  • Hashtable不支持key和value存储null,但支持存空字符串**

HashMap

  • HashMap是中支持空键和空值的,不论存入null或者空字符串程序都不会报错。

  • 不过需要注意的是若多条数据key值相同(同为null或者空字符串),则写入时后者会把前者的value值覆盖

  • key相同导致数据前者被后者覆盖

  • 在这里插入图片描述

  • key相同导致数据被覆盖,注释掉后就显示了

  • 在这里插入图片描述

  • 详细代码如下

  • HashMap<String, String> maps = new HashMap<>();
    maps.put("1", "q");
    maps.put("2", "");
    maps.put("", "");
    maps.put("", "3");
    maps.put("4", null);
    maps.put(null, null);
    maps.put(null, "6");
    for (String key : maps.keySet()) {
        System.out.println("Key-->" + key + "   Value-->" + maps.get(key));
    }
    

Hashtable

  • Hashtable不支持为null,key和value均不可以存储null,存在一个则程序报空指针异常。但可以存空字符串

  • 空字符串均不报错

  • 在这里插入图片描述

  • value为null报错空指针异常NullPointerException

  • 在这里插入图片描述

  • key为null报错空指针异常

  • 在这里插入图片描述

  • key和value均为null报错空指针异常

  • 在这里插入图片描述

  • Hashtable<String,String> hashtable = new Hashtable<>();
    hashtable.put("1","q");
    hashtable.put("2","");
    hashtable.put("","");
    hashtable.put("","3");
    // hashtable.put("4",null);
    // hashtable.put(null,"6");
    // hashtable.put(null,null);
    // for (String key : hashtable.keySet()) {
    //     System.out.println("Key-->" + key + "   Value-->" + hashtable.get(key));
    // }
    hashtable.forEach((key, value) -> {
        System.out.println("Key-->" + key + "   Value-->" + hashtable.get(key));
    });
    

-----------------------------------------------------------------------------------

offer突击训练营简介:

1:针对不知道怎么面试,面试没有信心的小伙伴,我们会给你一个offer保障。

2:我们会监督你15-20天内把面试体系技术点掌握至少7成,这样足够你去找到满意的工作了。

3:我们是面向面试学习指导,不会带你们去写代码,会把项目真实开发的迭代过程和技术细节如何实现业务功能都详细教清楚,你能在面试中流畅表达清楚就行了,项目经验你不用担心(技术老师提供的真实项目经验肯定拿的出手),自己学和别人带着系统学,效率完全不一样。

详情请点击这里offer突击训练营,给你一个offer的保障,求职跳槽的看过来!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT枫斗者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值