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

浙江沉船事故最新消息南昌seo报价

浙江沉船事故最新消息,南昌seo报价,安徽网站建设合肥网站建设,北京活动策划公司黄页Java putIfAbsent() 方法详解 在 Java 中#xff0c;putIfAbsent() 是 Map 接口中的一个方法#xff0c;从 Java 8 开始引入。它用于向映射中添加一个键值对#xff0c;只有在该键尚未存在时才进行添加操作。如果键已存在#xff0c;则不会覆盖原有值。 1. 方法定义 方法…Java putIfAbsent() 方法详解 在 Java 中putIfAbsent() 是 Map 接口中的一个方法从 Java 8 开始引入。它用于向映射中添加一个键值对只有在该键尚未存在时才进行添加操作。如果键已存在则不会覆盖原有值。 1. 方法定义 方法签名 default V putIfAbsent(K key, V value)参数 key要插入的键。value与键关联的值。 返回值 如果键不存在插入后返回 null。如果键已存在则返回该键当前的值插入操作不会执行。 2. 功能描述 检查键是否存在 如果键不存在则将键值对插入到映射中。如果键已存在则保持原有键值对不变。 线程安全 对于并发映射如 ConcurrentHashMapputIfAbsent() 是线程安全的保证了原子性。对于普通 HashMap则不是线程安全的。 避免覆盖现有值 与直接调用 put() 不同putIfAbsent() 不会覆盖现有的值。 3. 示例代码 3.1 基本用法 import java.util.HashMap; import java.util.Map;public class PutIfAbsentExample {public static void main(String[] args) {MapString, String map new HashMap();// 初始插入map.put(A, Apple);// 插入新键map.putIfAbsent(B, Banana);System.out.println(map); // 输出{AApple, BBanana}// 尝试插入已存在的键map.putIfAbsent(A, Avocado);System.out.println(map); // 输出{AApple, BBanana}} }分析 初次插入键 A 和 B。对于键 AputIfAbsent() 不会覆盖原值因此保持不变。 3.2 结合返回值 import java.util.HashMap; import java.util.Map;public class PutIfAbsentReturnExample {public static void main(String[] args) {MapString, String map new HashMap();// 尝试插入新键String result1 map.putIfAbsent(C, Cat);System.out.println(result1); // 输出null键 C 不存在// 再次尝试插入相同键String result2 map.putIfAbsent(C, Carrot);System.out.println(result2); // 输出Cat键 C 已存在值保持为 CatSystem.out.println(map); // 输出{CCat}} }3.3 使用 ConcurrentHashMap putIfAbsent() 在 ConcurrentHashMap 中非常有用可以实现线程安全的惰性初始化。 import java.util.concurrent.ConcurrentHashMap;public class ConcurrentPutIfAbsent {public static void main(String[] args) {ConcurrentHashMapString, Integer map new ConcurrentHashMap();// 多线程同时尝试插入map.putIfAbsent(key, 1);map.putIfAbsent(key, 2);System.out.println(map); // 输出{key1}只插入一次} }4. putIfAbsent() 和 put() 的区别 特性put()putIfAbsent()覆盖值如果键已存在则覆盖旧值。如果键已存在则不覆盖旧值。返回值返回旧值如果存在否则返回 null。如果键已存在返回旧值否则返回 null。性能直接插入操作可能覆盖原值。需要额外检查键是否存在线程安全时也加锁。线程安全ConcurrentMap不是线程安全的需要额外同步。线程安全尤其适用于 ConcurrentHashMap。 5. 使用场景 5.1 避免覆盖已存在值 当希望保持某个键的初始值避免被后续操作覆盖时 map.putIfAbsent(key, initialValue);5.2 延迟初始化 在多线程环境中putIfAbsent() 可以安全地初始化共享资源 public static ConcurrentHashMapString, String cache new ConcurrentHashMap();public static String getValue(String key) {return cache.putIfAbsent(key, DefaultValue); }5.3 统计或计数 可以用 putIfAbsent() 初始化键的默认值用于统计场景 map.putIfAbsent(count, 0); map.put(count, map.get(count) 1);6. 注意事项 线程安全 对普通的 HashMap 使用 putIfAbsent() 并不能实现线程安全。如果需要线程安全请使用 ConcurrentHashMap 或其他并发集合。 返回值的使用 返回值可以用来判断键是否已存在从而决定后续操作。 性能开销 对于并发集合如 ConcurrentHashMapputIfAbsent() 内部使用了锁来保证原子性可能有一定性能开销。 不可用于 null 值 putIfAbsent() 不允许插入 null 值ConcurrentHashMap 会抛出 NullPointerException。 7. 总结 putIfAbsent() 是一种安全的插入操作 如果键不存在则插入键值对。如果键已存在则保持原值不变。 线程安全性 在 ConcurrentHashMap 中putIfAbsent() 是线程安全的可用于多线程环境。 适用场景 避免值覆盖。延迟初始化或缓存加载。实现统计或计数。 通过正确使用 putIfAbsent() 方法可以简化代码逻辑同时确保数据的完整性和安全性尤其在并发场景中非常实用。
http://www.w-s-a.com/news/767290/

相关文章:

  • 服务器网站备案做网站公司如何赚钱
  • 怎样进行站点优化荣成市有做网站的吗
  • 合肥建设工会网站芜湖做网站建设公司
  • 玉林市住房和城乡建设局网站网站开发百灵鸟
  • 网站怎么做双机房切换建设部网站2015年第158号
  • 郑州服务设计公司网站色块的网站
  • 网站设计所用到的技术做网站添加mp3
  • 凡科做的微网站怎样连接公众号seo李守洪排名大师
  • 温州网站开发网站的制作东莞寮步伟易达电子厂
  • 北京网站设计制作关键词优化微信小程序开发推广网站建设优化规划书
  • 杭州临平网站建设开发公司将购房款划给总公司的法律责任
  • 广东外贸网站推广分类wordpress
  • 聚美优品网站建设方案商城和营销型网站建设
  • 比较著名的seo网站如何建设网站?
  • 如何做商业网站最火wordpress主题
  • 建设网站需要哪些软硬件条件wordpress文章页标题优化
  • 网站建设功能需求文档wordpress 1g1核1m
  • 学做窗帘要下载哪个网站用户反馈数据分析软件园
  • 宁晋网站建设多少钱产品宣传推广方式有哪些
  • delphi做网站阿里巴巴官网首页登录入口
  • 游戏网站怎么建设新建wordpress模板
  • 网络服务器是指兰州网站seo诊断
  • 怎样做投资理财网站godaddy上传网站
  • 网站建设深圳哪家好世界500强企业招聘网站
  • 如何减少网站建设中的错误温州网站公司哪家好
  • 宜章网站建设北京定制公交网站
  • 怎么让谷歌收录我的网站郑州网站建设更好
  • 在线视频网站开发方案phpaspnet网站开发实例视频
  • 正常做一个网站多少钱网站开发所遵循
  • 西部数码网站备份领英创建公司主页