我们提供安全,免费的手游软件下载!

安卓手机游戏下载_安卓手机软件下载_安卓手机应用免费下载-先锋下载

当前位置: 主页 > 软件教程 > 软件教程

为什么ConcurrentHashMap不能插入null?

来源:网络 更新时间:2024-06-06 15:31:54

在 Java 中的java.util包下,Map是一个接口(interface),而“为什么Map不能插入null”的问题本身并不严谨。Map类关系如下图所示:

实际上,这个问题更确切地应该是: 为什么ConcurrentHashMap不能插入null?

1.HashMap和ConcurrentHashMap的区别

HashMap和ConcurrentHashMap在对待null的态度上有所不同。在Java中,HashMap允许key和value值为null,下面的代码验证了这一点:

HashMap map = new HashMap();
  map.put(null, null);
  if (map.containsKey(null)) {
     System.out.println("存在 null");
  } else {
     System.out.println("不存在 null");
  }
  

以上程序的执行结果为存在null。

而ConcurrentHashMap则不同,它不支持key和value为null。试图这样操作的程序会出现错误。这体现在下述代码中:

ConcurrentHashMap concurrentHashMap = new ConcurrentHashMap();
  concurrentHashMap.put(null, "javacn.site");
  System.out.println(concurrentHashMap.get(null));
  

运行以上程序时将报错。同样,当试图将ConcurrentHashMap中的value值设为null时,也将会出错:

String key = "www.Javacn.site";
  ConcurrentHashMap concurrentHashMap = new ConcurrentHashMap();
  concurrentHashMap.put(key, null);
  System.out.println(concurrentHashMap.get(key));
  

运行以上程序同样会报错。因此可以得出结论:

  1. 在HashMap中,key和value值都可以为null。
  2. 在ConcurrentHashMap中,key或者value值都不能为null。