gpt4 book ai didi

Java ConcurrentHashMap: compute() 方法示例

转载 作者:知者 更新时间:2024-03-12 08:01:28 30 4
gpt4 key购买 nike

在本文中,我们将学习 Java ConcurrentHashMap 类的 compute() 方法。
找到 compute 方法的 Java 文档。

V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)

1.compute 方法计算指定键的值。它使用与指定键对应的新计算值更新值。
2.compute 方法调用以原子方式执行。
3. 每次调用 compute 方法时,只调用一次提供的 BiFunction

4。参数
key - 要为其计算相应值的键。
remappingFunction - 计算值的 BiFunction

5。返回compute 方法返回新的计算值。如果指定键没有对应的值,则返回 null。

6。抛出compute 方法可以抛出以下异常。
NullPointerException:如果指定的键或提供的 remappingFunction 为空。
IllegalStateException:如果计算是递归的。
RuntimeException:如果 remappingFunction 抛出 RuntimeException,那么 compute 方法也会抛出 RuntimeException

示例

ComputeDemo.java

package com.concretepage;
import java.util.concurrent.ConcurrentHashMap;

public class ComputeDemo {
  public static void main(String[] args) {
	System.out.println("--- Example-1 ---");
	ConcurrentHashMap<String, Integer> conMap1 = new ConcurrentHashMap<>();
	conMap1.put("Mahesh", 22);
	conMap1.put("Nilesh", 25);

	Integer v1 = conMap1.compute("Nilesh", (k, v) -> k.length() + v);
	System.out.println("v1: " + v1);
	System.out.println(conMap1);

	System.out.println("--- Example-2 ---");
	ConcurrentHashMap<Integer, String> conMap2 = new ConcurrentHashMap<>();
	conMap2.put(10, "Varanasi");
	conMap2.put(20, "Prayag");

	String v2 = conMap2.compute(10, (k, v) -> v + "-" + k * 2);
	System.out.println("v2: " + v2);
	System.out.println(conMap2);	
  }
}

输出

--- Example-1 ---
v1: 31
{Mahesh=22, Nilesh=31}
--- Example-2 ---
v2: Varanasi-20
{20=Prayag, 10=Varanasi-20}

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com