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(); }
}

输出结果: 

ConcurrentHashMap中的putIfAbsent方法的使用以及返回值的含义的更多相关文章

  1. 用mybatis中的insert方法插入数据,返回值为1,但数据库却没有数据

    刚才在写东西的时候,用mybatis中的 <insert id="add" parameterType="cn.entity.Computer"> ...

  2. ConcurrentHashmap中的size()方法简单解释

    本文所有的源码都是基于JDK1.8 ConcurrentHashmap中的size()方法源码: public int size() { long n = sumCount(); return ((n ...

  3. jquery中的ajax方法参数的用法和他的含义

    jquery中的ajax方法参数的用法和他的含义: 1.url:  要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type:  要求为String类型的参数,请求方式(pos ...

  4. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

    方法的重写Overriding和重载Overloading是Java多态性的不同表现.重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现.如 ...

  5. 方法的重写与重载的区别(Override与Overload)。重载的方法是否可以改变返回值的类型

    方法的重写(Override)与重载(Overload)的区别.重载的方法是否可以改变返回值的类型?[基础] 解释: 方法的重写overriding和重载Overloading是Java多态性的不同表 ...

  6. 接口作为方法的参数或返回值——List接口

    接口作为方法的参数或返回值,源码可知,List为一个接口,ArraryList是的它的实现类: 其中,addNames方法中,入参和返回值都List接口,入参是多态的,编译看左,运行看右(访问成员方法 ...

  7. Overloaded的方法是否可以改变返回值的类型

    摘要: 重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同) Overload是重载的意思,Override是覆盖的意思,也就是重写. 重载 ...

  8. Override和Overload差别,Overloaded的方法能否够改变返回值的类型?

    Overload是重载的意思, Override是覆盖的意思,也就是重写. 重载Overload表示同一个类中能够有多个名称同样的方法,但这些方法的參数列表各不同样(即參数个数或类型不同). 重写Ov ...

  9. Overload重載和Override重写的区别。Overloaded的方法是否可以改变返回值的类型?

    Overload是重载的意思,Override是覆盖的意思,也就是重写. 重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同). 重写Ove ...

随机推荐

  1. 【github&&git】1、github中的watch、star、fork的作用

    [转自:http://www.jianshu.com/p/6c366b53ea41] 在每个 github 项目的右上角,都有三个按钮,分别是 watch.star.fork,但是有些刚开始使用 gi ...

  2. 使用Swagger2时遇到的问题

    Swagger2使用起来很简单,加一个@EnableSwagger2注解,并引入如下依赖就ok了 <dependency> <groupId>io.springfox</ ...

  3. nginx简单使用配置

    使用nginx首先要明确使用场景,这里是一台服务器实现多种类型访问:网站首页访问,GitLab访问,note(私人springboot项目),静态文件访问. 下面是一份配置文件 nginx.conf, ...

  4. 聊聊大麦网UWP版的首页顶部图片联动效果的实现方法

    随着Windows10的发布,国内已经有越来越多的厂商上架了自家的通用应用程序客户端,比如QQ.微博.大麦等.所实话,他们设计的确实很好,很符合Windows10 的设计风格和产品理念,而对于开发者而 ...

  5. 解析<button>和<input type="button"> 的区别

    一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...

  6. blfs(systemv版本)学习笔记-wget的安装与配置

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! blfs wget项目地址:http://www.linuxfromscratch.org/blfs/view/8.3/basi ...

  7. css引入页面的三种方法

    1.内联式:直接在标签上写样式 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  8. Push notification - Caused by java.io.IOException toDerInputStream rejects tag

    苹果推送 : 文件不是P12文件当生成一个P12,需要选择两个,在钥匙串访问的私钥和证书.

  9. CSS--居中方式总结

    一.水平居中方法 1.行内元素.字体的水平居中 1.对于行内元素(display值为inline或inline-block都可以)或者字体:父元素添加css规则:text-align:center; ...

  10. 导入数据到MongoDB中

    import sys import json import pymongo import datetime from pymongo import MongoClient client = Mongo ...