在 Java 中,Map 接口提供了 putIfAbsent(key, value)
方法用于往映射中添加键值对(key-value),当且仅当指定的键(key)不存在时才执行添加操作。
该方法的签名如下:
V putIfAbsent(K key, V value)
其中,key
是要添加到 Map 的键,value
是要与键关联的值。如果指定的键已经存在于 Map 中,则不执行添加操作,并返回与指定键关联的当前值;如果指定的键不存在于 Map 中,则将指定的键值对添加到 Map,并返回 null
。
以下是一个示例:
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
// 使用 putIfAbsent 方法添加键值对
String oldValue = map.putIfAbsent(1, "One");
System.out.println("旧值:" + oldValue); // 输出:旧值:null
// 再次使用 putIfAbsent 方法添加相同的键值对
oldValue = map.putIfAbsent(1, "New One");
System.out.println("旧值:" + oldValue); // 输出:旧值:One
// 输出 Map 中的键值对
System.out.println(map); // 输出:{1=One}
}
}
在上述示例中,首先使用 putIfAbsent
方法将键值对 (1, “One”) 添加到 map
中。由于该键不存在,所以返回值为 null
。然后,再次使用 putIfAbsent
方法尝试添加相同的键值对 (1, “New One”),但由于该键已经存在于 map
中,所以不执行添加操作,并返回与该键关联的旧值 “One”。最后,通过输出 map
可以看到,最终 Map 中只有一个键值对 (1, “One”)。