为什么Java决定允许'null'作为HashMap中的键?我们知道hashcode()不能在null值上计算.是否有任何设计考虑因为这个决定允许HashMap中的null键在Hashtable中不存在(除了考虑作为默认值)?
从JDK 1.2 Java Collections API更改摘要(不确定在Oracle网站上的官方版本的位置):
为HashMap添加了空键支持.这样做是为了与TreeMap和已故的,未经过磨损的ArrayMap保持一致,并且因为客户要求它.现在我们所有的通用集合实现都接受null键,值和元素.
Joshua Bloch和Doug Lea对此持不同意见,这导致了并发哈希映射的问题.