HashMap类的replaceAll(BiFunction)方法用在给定值上应用给定函数(执行特定操作)的结果替换每个值。此过程以相同的方式继续进行,直到所有条目都已被处理或该函数引发异常为止。它抛出替换函数抛出的异常。
用法:
default void replaceAll(BiFunction<K, V> function)
参数:
- BiFunction:函数对每个条目的值进行运算。
返回值:替换到位的计算值,该方法不返回任何内容
异常:
- ClassCastException:抛出该异常以指示替换类尝试将对象强制转换为该映射不接受的类型的子类。
例:当尝试将Integer转换为String时,String不是Integer的子类,则将引发ClassCastException。 - ConcurrentModificationException:尝试在迭代时尝试同时修改或删除对象时发生。
例:当某个线程(在程序中的独立执行路径)对其进行迭代时,不允许其修改Collection。发生这种情况的原因是上述操作的结果不确定。 - IllegalArgumentException(可选):当传递了替换值的某些属性时,使用了非法或不适当的参数,因此阻止了将其存储在此映射中。
例:如果方法需要一个非空字符串作为参数,并且输入字符串等于null,则抛出IllegalArgumentException。 - NullPointerException (可选):当给定函数指向null或newValue尚未初始化,因此引用null时,它将引发NullPointerException。
例:调用空对象的实例方法。 - UnsupportedOperationException(可选):抛出以指示此映射不支持请求的操作。
例:在ArraysList类中,如果我们使用添加或删除方法,则会抛出UnsupportedOperationException。
以下示例程序旨在说明merge(Key,Value,BiFunctional)方法:
示例1:
// Java program to demonstrate
// replaceAll(BiFunction) method.
import java.util.*;
public class GFG {
// Main method
public static void main(String[] args)
{
// create a HashMap having some entries
HashMap<String, Integer>
map1 = new HashMap<>();
map1.put("key1", 1);
map1.put("key2", 2);
map1.put("key3", 3);
map1.put("key4", 4);
// print map details
System.out.println("HashMap1: "
+ map1.toString());
// replace oldValue with square of oldValue
// using replaceAll method
map1.replaceAll((key, oldValue)
-> oldValue * oldValue);
// print new mapping
System.out.println("New HashMap: "
+ map1);
}
}
输出:
HashMap1: {key1=1, key2=2, key3=3, key4=4} New HashMap: {key1=1, key2=4, key3=9, key4=16}
示例2:
// Java program to demonstrate
// replaceAll(BiFunction) method.
import java.util.*;
public class GFG {
// Main method
public static void main(String[] args)
{
// create a HashMap having
// record of the year of birth
HashMap<String, Integer>
map1 = new HashMap<>();
map1.put("Tushar", 2000);
map1.put("Anushka", 2001);
map1.put("Sanskriti", 2003);
map1.put("Anuj", 2002);
// print map details
System.out.println("HashMap1: "
+ map1.toString());
// replace yearOfBirth with current age
// using replaceAll method
map1.replaceAll((key, yearOfBirth)
-> 2019 - yearOfBirth);
// print new mapping
System.out.println("New HashMap: "
+ map1);
}
}
输出:
HashMap1: {Sanskriti=2003, Anushka=2001, Tushar=2000, Anuj=2002} New HashMap: {Sanskriti=16, Anushka=18, Tushar=19, Anuj=17}
相关用法
- Java HashMap putIfAbsent(key, value)用法及代码示例
- Java HashMap replace(key, value)用法及代码示例
- Java HashMap computeIfAbsent()用法及代码示例
- Java HashMap compute()用法及代码示例
- Java HashMap getOrDefault(key, defaultValue)用法及代码示例
- Java HashMap computeIfPresent(key, BiFunction)用法及代码示例
- Java HashMap merge(key, value, BiFunction)用法及代码示例
- Java HashMap forEach(BiConsumer)用法及代码示例
- Java HashMap replace(key, oldValue, newValue)用法及代码示例
- Java HashMap put()用法及代码示例
- Java HashMap get()用法及代码示例
- Java HashMap putAll()用法及代码示例
注:本文由纯净天空筛选整理自VincentSimon大神的英文原创作品 HashMap replaceAll(BiFunction) method in Java with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。