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

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

Java中,HashMap类的 replaceAll(BiFunction) 方法是将给定函数(执行某个操作)应用于对应值并将每个值替换为其结果。该过程在所有条目都已处理或函数抛出异常时继续进行。它会重新抛出替换函数抛出的异常。

语法:

default void replaceAll(BiFunction<K, V> function)

参数:

  • BiFunction: 对每个条目的值执行操作的函数。

返回值: 原地替换计算后的值,并且该方法不返回任何内容。

异常:

  • ClassCastException: 表示替换类试图将对象转换为不符合此映射的类型的子类时引发。举个例子, 当试图将Integer转换为String时, 由于String不是Integer的子类, 将抛出ClassCastException。
  • ConcurrentModificationException: 在以迭代的方式修改或删除对象时发生。
    例如: 不允许在另一个线程迭代Collection时修改Collection。原因是会导致上述操作的结果变得不确定。
  • IllegalArgumentException (可选) : 如果替换值的某个属性传递了非法或不适当的参数,则阻止该值被存储在此映射中并导致IllegalArgumentException。
    示例: 如果一个方法需要一个非空字符串作为参数,而输入字符串等于null,则会引发IllegalArgumentException。
  • NullPointerException (可选) : 当给定的函数指向null或newValue尚未初始化且因此指向null时,它会引发一个NullPointerException。
    例如: 调用一个空对象的实例方法。
  • UnsupportedOperationException (可选) : 表示该映射不支持所请求的操作,将抛出UnsupportedOperationException。
    例如: 在ArraysList类中,如果使用add或remove方法,将抛出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());
  
        // 使用replaceAll方法,将旧值替换为旧值的平方值。
        map1.replaceAll((key, oldValue)
                            -> oldValue * oldValue);
  
        // print new mapping
        System.out.println("New HashMap: "
                           +map1);
    }
}
HashMap1: {key1=1, key2=2, key3=3, key4=4}
新的 HashMap: {key1=1, key2=4, key3=9, key4=16}

程序2:

// Java程序演示了replaceAll(BiFunction)方法
  
import java.util.*;
  
public class GFG {
  
    // main方法
    public static void main(String[] args)
    {
  
        // 创建一个HashMap,记录出生年份
        HashMap<String, Integer>
            map1 = new HashMap<>();
        map1.put("Tushar", 2000);
        map1.put("Anushka", 2001);
        map1.put("Sanskriti", 2003);
        map1.put("Anuj", 2002);
  
        // 打印映射详情
        System.out.println("HashMap1: "
                           + map1.toString());
  
        // 使用replaceAll方法,将出生年份替换为当前年龄
        map1.replaceAll((key, yearOfBirth)
                            -> 2019 - yearOfBirth);
  
        // 打印新映射
        System.out.println("新的 HashMap: "
                           + map1);
    }
}
HashMap1: {Sanskriti=2003, Anushka=2001, Tushar=2000, Anuj=2002}
新的 HashMap: {Sanskriti=16, Anushka=18, Tushar=19, Anuj=17}

参考: https://docs.oracle.com/javase/10/docs/api/java/util/Map.html#replaceAll(java.util.function.BiFunction)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程