📅  最后修改于: 2023-12-03 15:01:53.514000             🧑  作者: Mango
在 Java 中,HashTable 是一个线程安全的哈希表,可以用于存储键值对。HashTable 类中有一个名为 compute() 的方法,可以用来计算指定键的值。
compute() 方法的语法如下:
V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
其中,K 表示键的类型,V 表示值的类型。remappingFunction 表示计算值的函数。该函数接收两个参数:键和当前键对应的值,并返回一个新值。
HashTable compute() 方法的作用是根据指定的键计算对应的值。如果指定的键在哈希表中存在,则使用 remappingFunction 函数计算该键的新值,并更新到哈希表中;如果指定的键在哈希表中不存在,则不进行任何操作。
假设有一个 HashTable 对象 scores,存储了学生的姓名和成绩。现在要计算某个学生的总分,并将其更新到哈希表中。可以使用 compute() 方法来实现:
import java.util.Hashtable;
import java.util.function.BiFunction;
public class ComputeDemo {
public static void main(String[] args) {
// 创建 Hashtable 对象
Hashtable<String, Integer> scores = new Hashtable<>();
scores.put("Tom", 80);
scores.put("Jerry", 90);
scores.put("Alice", 85);
// 计算学生的总分并更新到哈希表中
String name = "Tom";
int addScore = 10;
scores.compute(name, new BiFunction<String, Integer, Integer>() {
@Override
public Integer apply(String key, Integer value) {
if (value == null) {
// 如果指定的键在哈希表中不存在,则不进行任何操作
return null;
} else {
// 如果指定的键在哈希表中存在,则计算新值并更新到哈希表中
return value + addScore;
}
}
});
// 输出更新后的哈希表
System.out.println(scores);
}
}
运行结果如下:
{Tom=90, Jerry=90, Alice=85}
上述示例中,首先创建了一个 Hashtable 对象 scores,并存储了三个键值对。然后使用 compute() 方法计算 Tom 的总分并更新到哈希表中。如果 Tom 不存在,则不进行任何操作;如果存在,则使用 apply() 方法计算新的值。最后输出更新后的哈希表。注意,在 apply() 方法中,如果返回 null,则表示删除该键对应的值。