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

Java HashMap已存在的值是否覆盖

Java HashMap已存在的值是否覆盖

源代码如下

if (e != null) { // existing mapping for keyV oldValue = e.value;if (!onlyIfAbsent || oldValue == null)e.value = value;afterNodeAccess(e);return oldValue;
}

前提是key在HashMap中已存在,且已有对应的Node;

从上述代码理解,当oldValue 为空时,无论onlyIfAbsent 是什么,都会重新覆盖旧值。

一种情况,非空时不更新旧值

onlyIfAbsent的作用如下:

 public V putIfAbsent(K key, V value) {return putVal(hash(key), key, value, true, true);
}

变量更贴合方法 putIfAbsent 的定义:

  • 如果key对应的旧值存在且不为空,不更新。
  • 如果key对应的旧值为空,则覆盖更新。

其他的情况,都会覆盖更新

除此之外,其他的情况传递的onlyIfAbsent都是false,因此,无论值是否为空,都会覆盖更新。

http://www.dtcms.com/a/273300.html

相关文章:

  • 全链智造铸丰碑 全球布局启新程 —— 河北华创测控技术有限公司领航测控产业新高度
  • python学习打卡:DAY 29 复习日:类的装饰器
  • 快捷键——VsCode
  • msf复现“永恒之蓝”
  • 在 node 端执行打开一个新的 chrome 并且跳转到指定 url
  • 力扣热门算法题 136.只出现一次的数字,139.单词拆分,141.环形链表
  • Docker——容器文件操作
  • 实习第一个小需求样式问题总结
  • 八猴渲染器三维场景实时预览软件 Marmoset Toolbag 5.02b1 Win
  • 20250710-day11
  • 如何选择合适的ai降重工具?七个实用的ai查重网站
  • MyBatis插件机制揭秘:从拦截器开发到分页插件实战
  • 「莫尔物理新范式」普林斯顿马普所合作Nature论文:SnSe₂/ZrS₂扭曲双层实现M点能谷调控与拓扑新效应
  • 安装VMware详细步骤
  • 基于模糊控制及BP神经网络开关磁阻电机的matlab仿真
  • Python-函数进阶
  • 国内如何考取Oracle大师
  • F-GNN的新型检测框架:随机森林增强图神经网络
  • JDK动态代理:深入解析Java动态代理的核心实现
  • qwen3、gemma3 GPRO强化训练案例
  • spring-ai agent概念
  • 6.4 BL2到BL31/BL33的切换
  • Android 13----在framworks层映射一个物理按键
  • C++并发编程-12. 用内存顺序实现内存模型
  • 写《XX顶层设计》和《XX可研报告》区别。
  • MySQL索引:数据库的超级目录
  • 网站文章更新慢影响排名?AI批量写文章技巧分享
  • 综合演练——名片管理系统I
  • Canvas 状态管理 语法糖 canvas.withSave() {}
  • AtCoder Beginner Contest 413