📅  最后修改于: 2023-12-03 14:42:47.698000             🧑  作者: Mango
在Java中,HashTable是一个线程安全的哈希表,可以存储键值对,其中键和值都不能为空。HashTable中提供了put()方法用于将键值对存储到哈希表中,如果已经存在相同的键,则会覆盖原来的值。而putIfAbsent()方法则是仅在键不存在的情况下将键值对存储到哈希表中。
V putIfAbsent(K key, V value)
参数说明:
返回值:
import java.util.Hashtable;
public class Demo {
public static void main(String[] args) {
Hashtable<String, Integer> table = new Hashtable<>();
table.putIfAbsent("a", 1);
table.putIfAbsent("b", 2);
System.out.println(table); // 输出:{b=2, a=1}
table.putIfAbsent("a", 3);
System.out.println(table); // 输出:{b=2, a=1}
}
}
在上面的示例中,我们首先创建了一个空的HashTable对象。然后,我们使用putIfAbsent()方法将键值对a=1和b=2存储到哈希表中。在第一次调用putIfAbsent()时,键"a"不存在,因此"a=1"被成功存储到哈希表中。在第二次调用putIfAbsent()时,键"a"已经存在,所以值不会被覆盖,保持为原来的值。
最后,我们使用System.out.println()打印出存储在HashTable中的键值对。可以看到,HashTable中的键值对已按字典序排好序,并且键"a"对应的值为1而不是3,这说明putIfAbsent()方法确实只在键不存在的情况下才会存储键值对。