为什么Java允许在HashMap中使用'null'作为键?我们知道,空值无法计算hashcode()。除了将其视为默认值外,HashMap允许使用空键的这个决定是否有任何设计考虑(与Hashtable不同)?
来自 JDK 1.2 Java集合API变更摘要(不确定在Oracle网站上如何找到官方版本):
向HashMap添加了对null键的支持。这是为了与TreeMap和已故的ArrayMap保持一致,以及因为客户请求。现在我们所有通用集合实现都接受null键、值和元素。
Joshua Bloch和Doug Lea在此问题上存在分歧,这给并发哈希映射带来了问题。