Java.util.HashMap 类

java.util.HashMap.computeIfAbsent() 方法用于更新 HashMap 中的值,如果指定的键尚未与值关联(或映射为 null)。它尝试使用给定的映射函数计算其值并将其输入到此映射中,除非为 null。如果函数返回 null,则不会记录映射。如果函数本身抛出(未经检查的)异常,则重新抛出异常,并且不记录映射。

语法

public V computeIfAbsent(K key, 
                         Function<? super K,? extends V> mappingFunction)
  • 1
  • 2

这里,K和V是键和值的类型分别由容器维护。

参数

key 指定指定值所对应的key
remappingFunction 指定计算值的函数。

返回值

返回与指定键关联的当前(现有的或计算的)值,如果计算的值为 null,则返回 null。

异常

不适用。

示例:

在下面的示例中,java.util.HashMap.computeIfAbsent() 方法用于更新给定 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, null);
    MyMap.put(104, "Jo");

    //打印HashMap
    System.out.println("MyMap contains: " + MyMap);    

    //使用computeIfAbsent方法更新指定键的值
    MyMap.computeIfAbsent(103, k -> "Kim"); 
    MyMap.computeIfAbsent(105, k -> "Sam".concat(" Paul")); 

    //打印HashMap
    System.out.println("MyMap contains: " + MyMap);  
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

上述代码的输出将是:

MyMap contains: {101=John, 102=Marry, 103=null, 104=Jo}
MyMap contains: {101=John, 102=Marry, 103=Kim, 104=Jo, 105=Sam Paul}
  • 1
  • 2