一尘不染

为什么ConcurrentHashMap防止空键和值?

java

ConcurrentHashMap的JavaDoc 表示:

类似Hashtable但不同HashMap,这个类就不会允许null用作键或值。

我的问题:为什么?

第二个问题:为什么Hashtable不允许null?

我已经使用了很多HashMaps来存储数据。但是,当更改为ConcurrentHashMap时,由于NullPointerExceptions我遇到了几次麻烦。


阅读 331

收藏
2020-03-21

共1个答案

一尘不染

ConcurrentMaps(ConcurrentHashMaps,ConcurrentSkipListMaps)不允许使用null的主要原因是,无法容纳在非并行映射中几乎无法容忍的歧义。最主要的是,如果map.get(key)return null,则无法检测到该键是否显式映射到null该键。在非并行映射中,你可以通过进行检查 map.contains(key),但在并行映射中,两次调用之间的映射可能已更改。

2020-03-21