当前位置: 首页 > news >正文

美团面试拷打:ConcurrentHashMap 为何不能插入 null?HashMap 为何可以?

周末的时候,有一位小伙伴提了一些关于 ConcurrentHashMap 的问题,都是他最近面试遇到的。原提问如下(星球原贴地址:https://t.zsxq.com/11jcuezQs ):

整个提问看着非常复杂,其实归纳来说就是两个问题:

  1. ConcurrentHashMap 为什么 key 和 value 不能为 null?
  2. ConcurrentHashMap 能保证复合操作的原子性吗?

下面我会以此提供这两个问题的详细答案,希望对你有帮助。

ConcurrentHashMap 为什么 key 和 value 不能为 null?

ConcurrentHashMap 的 key 和 value 不能为 null 主要是为了避免二义性。null 是一个特殊的值,表示没有对象或没有引用。如果你用 null 作为键,那么你就无法区分这个键是否存在于 ConcurrentHashMap 中,还是根本没有这个键。同样,如果你用 null 作为值,那么你就无法区分这个值是否是真正存储在 ConcurrentHashMap 中的,还是因为找不到对应的键而返回的。

拿 get 方法取值来说,返回的结果为 null 存在两种情况:

  • 值没有在集合中 ;
http://www.lryc.cn/news/144755.html

相关文章:

  • 【力扣每日一题】2023.8.29 带因子的二叉树
  • origin导出pdf曲线超出边框
  • 由Android10适配到Android12时遇到相关编译失败问题
  • 高职教育应对ChatGPT应用的策略
  • Linux 内核编译参数
  • vscode使用anaconda自带的python环境在终端运行时报错
  • 葡萄叶病害识别(图像连续识别和视频识别,Python代码,pyTorch框架)
  • Oracle drop删除表如何恢复
  • 5、监测数据采集物联网应用开发步骤(5.1)
  • ZZULIOJ 1148: 组合三位数之一,Java
  • ROS功能包目录下CMakeLists.txt
  • Python爬虫追踪新闻事件发展进程及舆论反映
  • block层:7. 请求下发
  • Matlab图像处理-平移运算
  • 美创科技一体化智能化公共数据平台数据安全建设实践
  • 关于单例模式
  • pytest笔记: pytest单元测试框架
  • vulnhub Seattle-0.0.3
  • MYSQL 添加行号将行号写入到主键的列
  • 前端命令npm 、 cnpm、 pnpm、yarn 、 npx、nvm的区别
  • Linux 发行版 Debian 宣布支持龙芯 LoongArch 架构
  • PConv : Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks
  • Python中怎么解决内存管理的问题? - 易智编译EaseEditing
  • 【JavaEE】Spring事务-事务的基本介绍-事务的实现-@Transactional基本介绍和使用
  • CentOs下面安装jenkins记录
  • 海康威视相机-LINUX SDK 开发
  • AI助力智能安检,基于图像目标检测实现危险品X光智能安全检测系统
  • 开源软件的崛起:历史与未来
  • apk 静默安装
  • Unity记录4.2-存储-从json文件获取Tile路径