Java教程

Java HashMap computeIfPresent()

Java HashMap computeIfPresent()

Java HashMap 的computeIfPresent() 方法计算一个新值并将其与指定的键相关联,如果该键已存在于哈希图中。
computeIfPresent() 方法的语法是:
hashmap.computeIfPresent(K key, BiFunction remappingFunction)
这里, hashmapHashMap 类的对象。

computeIfPresent() 参数

computeIfPresent() 方法有两个参数:
key-与计算值关联的键 remappingFunction-计算指定键的新值的函数
注意: remappingFunction 可以接受两个参数。因此,被视为 BiFunction。

computeIfPresent() 返回值

返回与指定key相关联的新值 如果没有与 key 关联的值,则返回 null
注意: 如果 remappingFunction 结果为 null,则删除指定键的映射。

示例 1: Java HashMap computeIfPresent()

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);
    // recompute the value of Shoes with 10% VAT
    int shoesPrice = prices.computeIfPresent("Shoes", (key, value)-> value + value * 10/100);
    System.out.println("Price of Shoes after VAT: " + shoesPrice);
    // print updated HashMap
    System.out.println("Updated HashMap: " + prices);
  }
}
输出
HashMap: {Pant=150, Bag=300, Shoes=200}
Price of Shoes after VAT: 220
Updated HashMap: {Pant=150, Bag=300, Shoes=220}}
在上面的例子中,我们创建了一个名为 prices 的哈希图。注意表达式,
prices.computeIfPresent("Shoes", (key, value)-> value + value * 10/100)
这里,
(key, value)-> value + value*10/100 是一个 lambda 表达式。它计算 Shoes 的新值并返回它。要了解有关 lambda 表达式的更多信息,请访问 Java Lambda 表达式。 prices.computeIfPresent() 将 lambda 表达式返回的新值与 Shoes 的映射相关联。这是唯一可能的,因为 Shoes 已经映射到 hashmap 中的一个值。
这里,lambda 表达式充当重映射函数。而且,它需要两个参数。
注意: 如果键不存在于哈希图中,我们不能使用 computeIfPresent() 方法。
推荐阅读
HashMap compute()-计算指定键的值 HashMap computeIfAbsent()-如果指定的键未映射到任何键,则计算该值价值 Java HashMap merge()-执行与 compute() 相同的任务
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4