Map里面的键和值可以为空吗

您所在的位置:网站首页 不是null和允许空值一样吗 Map里面的键和值可以为空吗

Map里面的键和值可以为空吗

2024-06-24 05:26| 来源: 网络整理| 查看: 265

在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,可以看到:HashMap API

HashTable API

所以,对于Map里面的键和值是否可以为空的问题,答案是:不一定。对于HashMap来说,可以存放null键和null值,而HashTable则不可以。

更多思考: 对于第一个例子,我们会发现一个问题:打印HashMap的键和值的时候,输出结果并不是按照我们的插入顺序输出的。很多时候我们希望怎么放进去,就怎么拿出来,这种顺序对于显示或者处理很重要。查看Api后,发现ListOrderedMap可以满足我们的要求



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3