ConcurrentHashMap的JavaDoc 表示:
ConcurrentHashMap
类似Hashtable但不同HashMap,这个类就不会允许null用作键或值。
Hashtable
HashMap
我的问题:为什么?
第二个问题:为什么Hashtable不允许null?
我已经使用了很多HashMaps来存储数据。但是,当更改为ConcurrentHashMap时,由于NullPointerExceptions我遇到了几次麻烦。
ConcurrentMaps(ConcurrentHashMaps,ConcurrentSkipListMaps)不允许使用null的主要原因是,无法容纳在非并行映射中几乎无法容忍的歧义。最主要的是,如果map.get(key)return null,则无法检测到该键是否显式映射到null该键。在非并行映射中,你可以通过进行检查 map.contains(key),但在并行映射中,两次调用之间的映射可能已更改。
map.get(key)return null
map.contains(key)