java.util.HashMap.computeIfPresent() 方法用于更新 HashMap 中的值,如果指定的键存在且非空。它尝试在给定键及其当前映射值的情况下计算新映射。如果函数返回 null,则映射将被删除。如果函数本身抛出(未经检查的)异常,则重新抛出异常,并且当前映射保持不变。
语法
public V computeIfPresent(
K key,
BiFunction<? super K,? super V,? extends V> remappingFunction
)
这里,K和V是键的类型
参数
key | 指定容器所维护的key |
remappingFunction | 指定计算值的函数。 |
返回值
返回与指定键关联的新值,如果没有则返回 null。
异常
不适用。
示例:
在下面的示例中,使用了 java.util.HashMap.computeIfPresent() 方法更新给定 HashMap 中的值。
import java.util.*;
public class MyClass {
public static void main(String[] args) {
//创建HashMap
HashMap<Integer, String> MyMap = new HashMap<Integer, String>();
//填充HashMap
MyMap.put(101, "John");
MyMap.put(102, "Marry");
MyMap.put(103, "Kim");
MyMap.put(104, "Jo");
//打印HashMap
System.out.println("MyMap contains: " + MyMap);
//使用computeIfPresent方法更新指定键的值
MyMap.computeIfPresent(103, (k, v) -> "Sam");
MyMap.computeIfPresent(104, (k, v) -> "Lee");
//打印HashMap
System.out.println("MyMap contains: " + MyMap);
}
}
上述代码的输出将是:
MyMap contains: {101=John, 102=Marry, 103=Kim, 104=Jo}
MyMap contains: {101=John, 102=Marry, 103=Sam, 104=Lee}