📌  相关文章
📜  Java中的属性 computeIfPresent(Key, BiFunction) 方法及示例(1)

📅  最后修改于: 2023-12-03 15:16:32.524000             🧑  作者: Mango

Java中的属性 computeIfPresent(Key, BiFunction) 方法及示例

概述

Java中的Map中的computeIfPresent()方法是Java 8中引入的一个新方法,它允许我们在对Map进行更新或计算时将BiFunction应用于Map中已存在的键。

该方法将在Map中指定的键存在时执行所提供的函数,并返回计算后的新值。否则不执行任何操作并返回null。

该方法还可以用于添加过滤条件以确保仅在键存在时才执行某些操作。

该方法的签名如下:

default V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
  • key - 传入要处理的键。
  • remappingFunction - 一个函数,接受键和与之关联的值,并返回计算后的值。
示例

下面来看一个示例,我们将使用computeIfPresent()方法来从Map中减去某个值。

Map<String, Integer> map = new HashMap<>();
// 添加元素到Map中
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);

// 对Map中的值进行减法操作
map.computeIfPresent("a", (key, val) -> val - 1); 
map.computeIfPresent("b", (key, val) -> val - 2);
map.computeIfPresent("c", (key, val) -> val - 3);
map.computeIfPresent("d", (key, val) -> val - 4);

System.out.println(map); 

输出结果:

{a=0, b=0, c=0, d=0} 

在上面的示例中,我们首先创建了一个HashMap并将一些键值对添加到其中。然后使用computeIfPresent()方法对Map中的值进行减法操作。最后,我们将Map的内容打印出来,确保值已被正确更新。

值得注意的是,如果我们尝试对不存在的键使用该方法,则不会进行任何操作。

map.computeIfPresent("e", (key, val) -> val - 4);

System.out.println(map); 

输出结果:

{a=0, b=0, c=0, d=0} 

在上面的示例中,我们尝试对不存在的键 "e" 使用computeIfPresent()方法,但从输出结果可以看出,Map中的值并没有发生变化。

总结

使用computeIfPresent()方法可以方便地计算Map中已存在的键的值,也可以添加一些过滤条件。当处理Map时,这个方法可以提高代码的可读性和可维护性。