Map里面的键和值可以为空吗 |
您所在的位置:网站首页 › 不是null和允许空值一样吗 › Map里面的键和值可以为空吗 |
在Java中,Map里面的键和值可以为空吗?我们先来看一个例子: private static void TestHashMap() { // TODO Auto-generated method stub Map map = new HashMap(); map.put(0, "0"); map.put(1, null); map.put(null, "2"); map.put(3, ""); map.put(null, "4"); for (Integer key : map.keySet()) { System.out.println("Key-->" + key + " Value-->" + map.get(key)); } }输出结果: Key–>null Value–>4 Key–>0 Value–>0 Key–>1 Value–>null Key–>3 Value–>由此看来,对于我们平时使用较多的HashMap来说,键和值是可以为null的,map.put(null, “4”)还会覆盖map.put(null, “2”)这个操作。 我们是否可以由此得出Map里面的键和值是否一定可以为null呢?并不一定,再来看一个例子: private static void TestHashTable() { // TODO Auto-generated method stub Map map = new Hashtable(); map.put(0, "0"); map.put(1, null); map.put(null, "2"); map.put(3, ""); map.put(null, "4"); for (Integer key : map.keySet()) { System.out.println("Key-->" + key + " Value-->" + map.get(key)); } }运行之后,会出现“NullPointerException”异常。 查看Java Api,可以看到: 所以,对于Map里面的键和值是否可以为空的问题,答案是:不一定。对于HashMap来说,可以存放null键和null值,而HashTable则不可以。 更多思考: 对于第一个例子,我们会发现一个问题:打印HashMap的键和值的时候,输出结果并不是按照我们的插入顺序输出的。很多时候我们希望怎么放进去,就怎么拿出来,这种顺序对于显示或者处理很重要。查看Api后,发现ListOrderedMap可以满足我们的要求 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |