當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java HashMap computeIfAbsent()用法及代碼示例


Java HashMap computeIfAbsent() 方法計算一個新值並將其與指定的鍵相關聯,如果該鍵未與散列圖中的任何值相關聯。

用法:

hashmap.computeIfAbsent(K key, Function remappingFunction)

這裏,hashmapHashMap 類的對象。

參數:

computeIfAbsent() 方法采用 2 個參數:

  • key- 與計算值關聯的鍵
  • remappingFunction- 計算指定的新值的函數鑰匙

注意: 這remapping function不能接受兩個參數。

返回:

  • 返回新的或者舊值與指定的相關聯key
  • 如果沒有與 key 關聯的值,則返回 null

注意: 如果remappingFunction結果null,然後是指定的映射鑰匙已移除。

示例 1:Java HashMap computeIfAbsent()

import java.util.HashMap;

class Main {
  public static void main(String[] args) {
    // create an HashMap
    HashMap<String, Integer> prices = new HashMap<>();

    // insert entries to the HashMap
    prices.put("Shoes", 200);
    prices.put("Bag", 300);
    prices.put("Pant", 150);
    System.out.println("HashMap: " + prices);

    // compute the value of Shirt
    int shirtPrice = prices.computeIfAbsent("Shirt", key -> 280);
    System.out.println("Price of Shirt: " + shirtPrice);

    // print updated HashMap
    System.out.println("Updated HashMap: " + prices);
  }
}

輸出

HashMap: {Pant=150, Bag=300, Shoes=200}
Price of Shirt: 280
Updated HashMap: {Pant=150, Shirt=280, Bag=300, Shoes=200}

在上麵的示例中,我們創建了一個名為 prices 的 hashmap。注意表達式,

prices.computeIfAbsent("Shirt", key -> 280)

這裏,

  • 鍵-> 280是一個 lambda 表達式。它返回值 280。要了解有關 lambda 表達式的更多信息,請訪問Java Lambda 表達式.
  • prices.computeIfAbsent()將 lambda 表達式返回的新值與Shirt.這隻是可能的,因為Shirt已經沒有映射到哈希圖中的任何值。

示例 2:computeIfAbsent() 如果 key 已經存在

import java.util.HashMap;

class Main {
  public static void main(String[] args) {
    // create an HashMap
    HashMap<String, Integer> prices = new HashMap<>();

    // insert entries to the HashMap
    prices.put("Shoes", 180);
    prices.put("Bag", 300);
    prices.put("Pant", 150);
    System.out.println("HashMap: " + prices);

    // mapping for Shoes is already present
    // new value for Shoes is not computed
    int shoePrice = prices.computeIfAbsent("Shoes", (key) -> 280);
    System.out.println("Price of Shoes: " + shoePrice);

    // print updated HashMap
    System.out.println("Updated HashMap: " + prices);
  }
}

輸出

HashMap: {Pant=150, Bag=300, Shoes=180}
Price of Shoes: 180
Updated HashMap: {Pant=150, Bag=300, Shoes=180}

在上麵的示例中,Shoes 的映射已經存在於 hashmap 中。因此,computeIfAbsent() 方法不會計算 Shoes 的新值。

相關用法


注:本文由純淨天空篩選整理自 Java HashMap computeIfAbsent()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。