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的保障,求职跳槽的看过来!