Java中HashMap replaceAll(BiFunction)方法及示例
HashMap
是 Java 中最常用的集合之一,在开发过程中我们会频繁使用到它。在 JDK8 中,HashMap
中新增了一个方法 replaceAll(BiFunction)
,可以方便地替换 HashMap
中的所有键值对。本文将介绍这个方法的使用方法及示例。
HashMap replaceAll(BiFunction)
方法
HashMap replaceAll(BiFunction)
方法的定义如下:
public void replaceAll(BiFunction<? super K,? super V,? extends V> function) {
Objects.requireNonNull(function);
final Node<K,V>[] tab;
if (size > 0 && (tab = table) != null) {
for (int i = 0; i < tab.length; ++i) {
for (Node<K,V> e = tab[i]; e != null; e = e.next) {
e.value = function.apply(e.key, e.value);
}
}
}
}
方法接受一个参数 BiFunction<? super K, ? super V, ? extends V> function
,其中 K
表示键的类型,V
表示值的类型。它会遍历 HashMap
中的所有键值对,对每个值进行处理。操作的结果会写回到原位置。
示例
下面是一个简单的示例,展示了如何使用 HashMap replaceAll(BiFunction)
方法将所有字符串的值全部变成大写:
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
// 将所有字符串的值变成大写
map.replaceAll((k, v) -> v.toUpperCase());
// 打印结果
System.out.println(map);
}
}
输出结果:
{key1=VALUE1, key2=VALUE2, key3=VALUE3}
进阶示例
除了简单的字符串操作,我们还可以使用更为复杂的 BiFunction
对键值对进行处理。下面是一个进阶示例,实现了将所有元素翻倍的功能:
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<Integer, Integer> map = new HashMap<>();
map.put(1, 2);
map.put(2, 4);
map.put(3, 6);
// 将所有元素翻倍
map.replaceAll((k, v) -> v * 2);
// 打印结果
System.out.println(map);
}
}
输出结果:
{1=4, 2=8, 3=12}
结论
通过本文的介绍,我们了解了 HashMap replaceAll(BiFunction)
方法的用法,并使用示例进行了演示。我们可以看到,使用 HashMap replaceAll(BiFunction)
方法可以方便地对 HashMap
中的所有键值进行批量操作。