📅  最后修改于: 2023-12-03 14:42:47.637000             🧑  作者: Mango
在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
函数不能为nullreplaceAll()
操作期间,HashMap不能被修改(例如M or E被添加、删除或更改)。失败后可能会抛出 ConcurrentModificationException
异常