【发布时间】:2010-10-16 11:11:02
【问题描述】:
ConcurrentHashMap 的 JavaDoc 是这样说的:
与
Hashtable类似,但与HashMap不同,此类不允许允许将null用作键或值。
我的问题:为什么?
第二个问题:为什么Hashtable 不允许为空?
我使用了很多 HashMap 来存储数据。但是当更改为ConcurrentHashMap 时,由于 NullPointerExceptions,我遇到了几次麻烦。
【问题讨论】:
-
我认为这是一个非常烦人的不一致。 EnumMap 也不允许为空。显然没有不允许空键的技术限制。对于 Map
,只需一个 V 类型的字段即可支持空键(如果您想区分空值和无值,可能是另一个布尔字段)。 -
一个更好的问题是“为什么 HashMap 允许空键和空值?”。或者可能,“为什么 Java 允许 null 存在于所有类型中?”,甚至“为什么 Java 有 null?”。