📅  最后修改于: 2023-12-03 15:15:56.124000             🧑  作者: Mango
在 Java 编程语言中,HashMap 是一种常用的数据结构,用于存储键-值对。Java HashMap 提供了一个 compute() 方法,可以用来更新 HashMap 中的值。
V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
其中,K 表示键的类型,V 表示值的类型,BiFunction<? super K, ? super V, ? extends V> 表示一个接受两个参数的函数。该函数的第一个参数类型是 K,第二个参数类型是 V,第三个参数类型是 V,可以根据需要更改。
该方法返回计算结果的新值。如果结果为 null,则键被删除。如果结果为非空,则该结果将作为新值与键相关联。
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<String, Integer> hashMap = new HashMap<>();
hashMap.put("A", 1);
hashMap.put("B", 2);
hashMap.put("C", 3);
System.out.println("HashMap before compute(): " + hashMap);
// 使用 lambda 表达式更新值
hashMap.compute("A", (key, val) -> val + 10);
hashMap.compute("B", (key, val) -> null);
System.out.println("HashMap after compute(): " + hashMap);
}
}
输出结果:
HashMap before compute(): {A=1, B=2, C=3}
HashMap after compute(): {A=11, C=3}
以上示例代码创建了一个包含三个键-值对的 HashMap,然后使用 compute() 方法将键 A 关联的值增加了 10,将键 B 关联的值删除了,将键 C 关联的值保持不变。 执行完后,HashMap 的值变为 {A=11, C=3}。
Java HashMap 中的 compute() 方法可以用来更新 hashmap 中的值,更灵活、方便,可以使用 lambda 表达式来实现。但需要注意的是,当通过 BiFunction 计算出 null 值时,该键值对会从 HashMap 中删除。 因此,在使用 compute() 方法时,需要对 null 值进行判断处理。