📜  Java中的 HashMap replaceAll(BiFunction) 方法及示例(1)

📅  最后修改于: 2023-12-03 14:42:47.637000             🧑  作者: Mango

Java中的 HashMap replaceAll(BiFunction) 方法及示例

在Java的HashMap类中,有一个很实用的方法 replaceAll(BiFunction),该方法可以用于将HashMap中的所有值进行映射转换,同时key值不变。本文将为您介绍该方法的详细使用方法及示例。

方法介绍

replaceAll(BiFunction) 方法用于将HashMap中的所有映射(键-值对)根据指定的BiFunction函数映射转换为新的映射,其中BiFunction函数需要实现一个apply方法。apply方法接收两个参数,第一个参数为map中的key,第二个参数为map中的value,返回值为映射到的新value值。

该方法的使用方式为:

public void replaceAll(BiFunction<? super K, ? super V, ? extends V> function)

其中参数function为一个实现了BiFunction接口的函数,将旧的value值映射为新的value值。

示例

下面我们通过一个简单的例子,来演示该方法的使用。

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

public class HashMapReplaceAllExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("key1", 100);
        map.put("key2", 200);
        map.put("key3", 300);
        System.out.println("Before replaceAll() : " + map);

        // 修改所有值,加上100
        map.replaceAll((k, v) -> v + 100);
        System.out.println("After replaceAll() : " + map);
    }
}

上述代码会输出以下结果:

Before replaceAll() : {key1=100, key2=200, key3=300}
After replaceAll() : {key1=200, key2=300, key3=400}

示例中,我们使用HashMap将三个映射分别为 "key1-100"、"key2-200" 和 "key3-300" 添加到Map中。接着,我们调用了 replaceAll() 方法,使用lambda表达式将所有的value值加上100。最后输出操作前后的Map。

注意事项
  • 传递的 function 函数不能为null
  • 执行 replaceAll() 操作期间,HashMap不能被修改(例如M or E被添加、删除或更改)。失败后可能会抛出 ConcurrentModificationException 异常

文档:https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/HashMap.html#replaceAll(java.util.function.BiFunction)