java中map可以为空吗_Java: 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,可以看到:

2bfca7febdc71ea7711c507aed0e701a.png

8c91f249d56635e41427c30deccd19d0.png

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值