周末的时候,有一位小伙伴提了一些关于 ConcurrentHashMap
的问题,都是他最近面试遇到的。原提问如下(星球原贴地址:https://t.zsxq.com/11jcuezQs ):
整个提问看着非常复杂,其实归纳来说就是两个问题:
-
ConcurrentHashMap
为什么 key 和 value 不能为 null? -
ConcurrentHashMap
能保证复合操作的原子性吗?
下面我会以此提供这两个问题的详细答案,希望对你有帮助。
ConcurrentHashMap 为什么 key 和 value 不能为 null?
ConcurrentHashMap
的 key 和 value 不能为 null 主要是为了避免二义性。null 是一个特殊的值,表示没有对象或没有引用。如果你用 null 作为键,那么你就无法区分这个键是否存在于 ConcurrentHashMap
中,还是根本没有这个键。同样,如果你用 null 作为值,那么你就无法区分这个值是否是真正存储在 ConcurrentHashMap
中的,还是因为找不到对应的键而返回的。文章来源:https://www.toymoban.com/news/detail-680024.html
拿 get 方法取值来说,返回的结果为 null 存在两种情况:文章来源地址https://www.toymoban.com/news/detail-680024.html
- 值没有在集合中 ;
到了这里,关于美团面试拷打:ConcurrentHashMap 为何不能插入 null?HashMap 为何可以?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!