public V putIfAbsent(@NotNull K key, 
@NotNull V value)

putIfAbsent方法主要是在向ConcurrentHashMap中添加键—值对的时候,它会先判断该键值对是否已经存在。

如果不存在(新的entry),那么会向map中添加该键值对,并返回null。 
如果已经存在,那么不会覆盖已有的值,直接返回已经存在的值。 
相当于:

 V v = map.get(key);
if (v == null)
v = map.put(key, value);
return v;

返回值: 
(1)如果是新的记录,那么会向map中添加该键值对,并返回null。 
(2)如果已经存在,那么不会覆盖已有的值,直接返回已经存在的值。

测试代码:

package com.tao.client;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; /**
* Created by michael on 17-7-13.
*/
public class Test { public static void main(String[] args) { //测试一下currentHashMap.putIfAbsent() Map<Long, String> clientMap = new ConcurrentHashMap<>(); System.out.println("首先打印空的clientMap");
System.out.println("clientMap: " + clientMap);
System.out.println(); //在空的clientMap中添加一个新的记录
System.out.println("在空的clientMap中添加一个新的记录");
System.out.println("添加之前的clientMap: " + clientMap);
long netId = 1234567L;
String str1 = "michael";
String result = clientMap.putIfAbsent(netId, str1);
System.out.println("添加之后的clientMap: " + clientMap);
System.out.println("查看返回值result: " + result);
System.out.println(); //重复添加
System.out.println("重复添加上一次的记录");
System.out.println("添加之前的clientMap: " + clientMap);
String result2 = clientMap.putIfAbsent(netId, str1);
System.out.println("添加之后的clientMap: " + clientMap);
System.out.println("查看返回值result: " + result2);
System.out.println(); }
}

输出结果: 

最新文章

  1. WebView随学笔记
  2. jmeter jdbc request使用详解
  3. BZOJ 2466: [中山市选2009]树
  4. [Java] 解决spring的xml标签内不能自由增加说明的难题,方便调试、部署时进行批量屏蔽
  5. ajax跨域请求的解决方案
  6. SQLServer2012分离出的数据库存放路径
  7. iOS军火库-好用的ActionSheetView
  8. SKAction类
  9. unity3d实现Socket
  10. ESFramework 4.0 性能测试
  11. spring(一) IOC讲解
  12. web 10
  13. Atitit 3种类型的公司:运营驱动型;产品驱动型; 技术驱动型。
  14. 复旦大学2016--2017学年第二学期(16级)高等代数II期末考试第六大题解答
  15. OCM_第十六天课程:Section7 &mdash;》GI 及 ASM 安装配置 _安装 GRID 软件/创建和管理 ASM 磁盘组/创建和管理 ASM 实例
  16. mysql监控利器mysqlmtop部署安装
  17. Eclipse C++,Cygwin 64,gcov,lcov 单体&amp;覆盖率测试环境搭建笔记
  18. class 3 求数组中的最大值(单元测试)
  19. 基于C#的机器学习--颜色混合-自组织映射和弹性神经网络
  20. Django基本目录详解

热门文章

  1. Java并发编程:什么是CAS?这回总算知道了
  2. Java学习笔记之——循环语句
  3. MyBatis学习笔记(一) 概述
  4. 【Spring】18、springMVC对异常处理的支持
  5. CSS--使用伪选择器制作箭头图标
  6. returnFunc.js
  7. Android中的padding和margin的区别
  8. Nginx下配置网站SSL实现https访问本站就是用的这方法
  9. SQL Server的一个不显眼的功能 备份文件的分割
  10. git命令设置简写(别名)