Java中的ConcurrentHashMap put()方法

Java中的ConcurrentHashMap put()方法

在Java中,ConcurrentHashMap类中的put()方法用于在映射中将给定值与给定键关联。其具有以下签名:

V put(K key, V value)

其中:

  1. K是映射中键的类型。
  2. V是映射中值的类型。
  3. key是要与给定值关联的键。
  4. value是要与给定键关联的值。
  5. put()方法在并发环境下工作,这意味着多个线程可以同时访问和修改concurrentHashMap实例,而不会出现任何数据竞争或同步问题。

执行put()操作时,该方法首先在对应于给定键的映射段上获取锁。如果该键已经存在于映射中,则将键关联的旧值替换为新值。如果该键不存在于映射中,则添加一个新条目,具有给定的键值对。

put()方法返回与给定键关联的先前值,如果该键之前没有映射,则返回null。如果您不需要先前的值,则可以忽略返回值。

// Java program to demonstrate
// put() method
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;

public class ConcurrentHashMapExample {

    public static void main(String[] args)
    {
        // Creating ConcurrentHashMap
        Map<String, String> my_cmmap
            = new ConcurrentHashMap<String, String>();

        // Adding elements to the map
        // using put() method
        my_cmmap.put("1", "1");
        my_cmmap.put("2", "1");
        my_cmmap.put("3", "1");
        my_cmmap.put("4", "1");
        my_cmmap.put("5", "1");
        my_cmmap.put("6", "1");

        // Printing the map
        System.out.print(my_cmmap);
    }
}

输出

{Bob=30, Alice=25, Charlie=35}
Old value for Bob: 30
{Bob=40, Alice=25, Charlie=35}
New value for Dave: null
{Bob=40, Alice=25, Charlie=35, Dave=45}

ConcurrentHashMap类中的put()方法用于将映射插入此映射。它将参数作为(Key, Value)对。如果传递了一个现有的键和值,则该方法更新该键的值。否则,如果传递了一个新的对,那么整个对都将被插入。

语法:

public V put(K key, V value)

参数: 该方法接受两个必需参数:

  • key: 与指定值关联的键。
  • value: 要与指定键关联的值。

返回值: 该方法返回与键关联的先前值,如果键之前没有映射,则返回null。

异常: 如果指定的键或值为null,则此方法会抛出NullPointerException。以下是说明put()方法的示例:

程序1: 当传递的键和值是新的时。

// 展示使用 put() 方法的 Java 程序

import java.util.*;
import java.util.concurrent.ConcurrentHashMap;

public class ConcurrentHashMapExample {

    public static void main(String[] args)
    {
        // 创建 ConcurrentHashMap
        Map<String, String> my_cmmap
            = new ConcurrentHashMap<String, String>();

        // 使用 put() 方法向 map 中添加元素
        my_cmmap.put("1", "1");
        my_cmmap.put("2", "1");
        my_cmmap.put("3", "1");
        my_cmmap.put("4", "1");
        my_cmmap.put("5", "1");
        my_cmmap.put("6", "1");

        // 打印 map
        System.out.print(my_cmmap);
    }
}

输出

{1=1, 2=1, 3=1, 4=1, 5=1, 6=1}

程序 2: 传递已存在 Key、Value。

// 展示使用 put() 方法的 Java 程序

import java.util.*;
import java.util.concurrent.ConcurrentHashMap;

public class ConcurrentHashMapExample {

    public static void main(String[] args)
    {
        // 创建 ConcurrentHashMap
        Map<String, String> my_map
            = new ConcurrentHashMap<String, String>();

        // 变量获取 put() 返回的值
        String returnedValue;

        // 使用 put() 方法向 map 中添加元素,并每次打印返回值
        returnedValue = my_map.put("Geek", "100");
        System.out.println("Map: " + my_map);
        System.out.println("Returned Value: "
                                   + returnedValue);
        System.out.println();

        returnedValue = my_map.put("Geek", "200");
        System.out.println("Map: " + my_map);
        System.out.println("Returned Value: "
                                   + returnedValue);
        System.out.println();

        returnedValue = my_map.put("Geek", "300");
        System.out.println("Map: " + my_map);
        System.out.println("Returned Value: "
                                   + returnedValue);
        System.out.println();

        returnedValue = my_map.put("Geek", "400");
        System.out.println("Map: " + my_map);
        System.out.println("Returned Value: "
                                   + returnedValue);
        System.out.println();

        returnedValue = my_map.put("Geek", "500");
        System.out.println("Map: " + my_map);
        System.out.println("Returned Value: "
                                   + returnedValue);
        System.out.println();

        System.out.print(my_map);
    }
}

输出

Map: {Geek=100}
Returned Value: null

Map: {Geek=200}
Returned Value: 100

Map: {Geek=300}
Returned Value: 200

Map: {Geek=400}
Returned Value: 300

Map: {Geek=500}
Returned Value: 400

{Geek=500}

程序 3: 展示 NullPointerException

// Java程序演示
// put() 方法
 
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
 
public class ConcurrentHashMapExample {
 
    public static void main(String[] args)
    {
        // 创建ConcurrentHashMap
        Map<String, String> my_cmmap
            = new ConcurrentHashMap<String, String>();
 
        // 使用put()方法向map中添加元素
        my_cmmap.put("1", "1");
        my_cmmap.put("2", "1");
        my_cmmap.put("3", "1");
        my_cmmap.put("4", "1");
        my_cmmap.put("5", "1");
        my_cmmap.put("6", "1");
 
        // 打印map
        System.out.println(my_cmmap + "\n");
 
        // 当空键被传递时
        try {
            System.out.println("当参数为(null, \"10\")时:");
            my_cmmap.put(null, "10");
        }
        catch (Exception e) {
            System.out.println("异常:" + e + "\n");
        }
 
        // 当空值被传递时
        try {
            System.out.println("当参数为(\"10\", null)时:");
            my_cmmap.put("10", null);
        }
        catch (Exception e) {
            System.out.println("异常:" + e + "\n");
        }
    }
}

输出结果

{1=1, 2=1, 3=1, 4=1, 5=1, 6=1}

当参数为(null, "10")时:
异常:java.lang.NullPointerException

当参数为("10", null)时:
异常:java.lang.NullPointerException

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程