【发布时间】:2012-03-28 17:23:46
【问题描述】:
为什么 Java 决定允许 'null' 作为 HashMap 中的键?我们知道 hashcode() 不能在空值上计算。这个决定是否有任何设计考虑,允许在 HashMap 中使用 Hashtable 中不存在的空键(除了考虑作为默认值)?
【问题讨论】:
标签: java
为什么 Java 决定允许 'null' 作为 HashMap 中的键?我们知道 hashcode() 不能在空值上计算。这个决定是否有任何设计考虑,允许在 HashMap 中使用 Hashtable 中不存在的空键(除了考虑作为默认值)?
【问题讨论】:
标签: java
来自JDK 1.2 Java Collections API Change Summary(不知道在Oracle的网站上哪里可以找到正式版):
为 HashMap 添加了空键支持。这样做是为了与 TreeMap 和迟来的、无怨无悔的 ArrayMap,以及因为客户 要求它。现在我们所有的通用系列 实现接受空键、值和元素。
Joshua Bloch and Doug Lea disagreed on this,这给concurrent hash maps带来了问题。
【讨论】: