一线大厂 HashMap 面试题 面试环境下你能回答吗?

77 阅读1分钟

为什么HashMap 和 ConcurrentHashMap 的键和值能不能插入null?

第一个问题比较简单了 HashMap 没有限制 ConcurrentHashMap 都不允许为空

第二个小问 为什么 ConcurrentHashMap 键和值都不允许插入null

你可以说源码就是这样写的,只要 KV 为 null 直接抛出异常 但是这个问题是需要你回答为什么这么设计的

 // 添加 key 和 value 最后调用的方法
final V putVal(K key, V value, boolean onlyIfAbsent) {
    // 如果 key 或 value 为 null 的话直接抛出空指针异常
    if (key == null || value == null) throw new NullPointerException(); 
    // 忽略 ......
} 

如果在面试情况下,不能百度,需要时间限制,你能回答这个问题吗?