ConcurrentHashMap computeIfAbsent 和 putIfAbsent 方法的区别

computeIfAbsent 和 putIfAbsent 区别有三点:

  • 当 Key 存在的时候,如果 Value 获取比较昂贵的话,putIfAbsent 就白白浪费时间在获取这个昂贵的 Value 上(这个点特别注意)

  • Key 不存在的时候,putIfAbsent 返回 null,小心空指针,而 computeIfAbsent 返回计算后的值

  • 当 Key 不存在的时候,putIfAbsent 允许 put null 进去,而 computeIfAbsent 不能,之后进行 containsKey 查询是有区别的(当然了,此条针对 HashMap,ConcurrentHashMap 不允许 put null value 进去)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容