📜  Java中的 HashMap computeIfPresent(key, BiFunction) 方法及示例(1)

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

Java中的 HashMap computeIfPresent(key, BiFunction) 方法及示例

介绍

在Java中,HashMap是一种常用的数据结构,用于存储键值对。HashMap类提供了computeIfPresent(key, BiFunction)方法,用于在指定的key存在时,根据给定的BiFunction对应的函数逻辑来更新该key对应的value。

该方法的签名如下:

default V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)

其中:

  • key:要更新的键。
  • remappingFunction:接收两个参数(key和value)的函数,用于计算新的value。

如果指定key存在于HashMap中,则会应用remappingFunction来计算新的value,并将其存储为指定key对应的value。如果remappingFunction返回null,则会将指定key从HashMap中删除。

示例

下面是一个示例代码,演示了如何使用HashMap的computeIfPresent方法:

import java.util.HashMap;
import java.util.Map;

public class HashMapComputeIfPresentExample {
    public static void main(String[] args) {
        // 创建一个HashMap对象
        Map<String, Integer> map = new HashMap<>();

        // 向HashMap中添加键值对
        map.put("A", 1);
        map.put("B", 2);
        map.put("C", 3);

        // 打印原始的HashMap
        System.out.println("原始的HashMap:" + map);

        // 更新键为 "B" 的值
        map.computeIfPresent("B", (key, value) -> value * 2);

        // 打印更新后的HashMap
        System.out.println("更新后的HashMap:" + map);

        // 尝试更新键为 "D" 的值
        map.computeIfPresent("D", (key, value) -> value * 2);

        // 打印没有更新的HashMap
        System.out.println("没有更新的HashMap:" + map);
    }
}

上述代码中,我们首先创建一个HashMap对象,并向其添加了三个键值对。然后,我们调用computeIfPresent方法来更新键为"B"的值,将其乘以2。接着,我们尝试更新键为"D"的值,但由于该键不存在于HashMap中,更新操作不会执行。

在这个示例中,输出将会是:

原始的HashMap:{A=1, B=2, C=3}
更新后的HashMap:{A=1, B=4, C=3}
没有更新的HashMap:{A=1, B=4, C=3}

可以看到,computeIfPresent方法成功更新了键为"B"的值,但没有对键为"D"的值进行更新。

注意:在remappingFunction中,我们可以根据需要编写自己的逻辑来计算新的value。上述示例中,我们简单地将原始值乘以2,但具体的逻辑可以根据实际需求进行编写。

总结

HashMap的computeIfPresent方法是一个非常有用的方法,它允许我们在更新指定key对应的value时,根据自定义的逻辑来计算新的value。在我们需要根据旧的value来更新值的情况下,这个方法非常有用。

希望本文对你了解HashMap的computeIfPresent方法有所帮助!