我们提供安全,免费的手游软件下载!
在 Java 中的java.util包下,Map是一个接口(interface),而“为什么Map不能插入null”的问题本身并不严谨。Map类关系如下图所示:
实际上,这个问题更确切地应该是:
为什么ConcurrentHashMap不能插入null?
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));
运行以上程序同样会报错。因此可以得出结论:
热门资讯