El método replaceAll (BiFunction) de la clase HashMap reemplaza cada valor con el resultado de aplicar la función dada (realiza una determinada operación) en el valor correspondiente. Este proceso continúa de la misma manera hasta que se han procesado todas las entradas o hasta que la función lanza una excepción. Vuelve a lanzar las excepciones lanzadas por la función de reemplazo.
Sintaxis:
default void replaceAll(BiFunction<K, V> function)
Parámetro:
- BiFunction: función para realizar la operación sobre el valor de cada entrada.
Valor devuelto: reemplaza los valores calculados en su lugar y el método no devuelve nada
Excepciones:
- ClassCastException: lanzada para indicar que la clase de reemplazo ha intentado convertir un objeto a una subclase que es del tipo no aceptable para este mapa.
Ejemplo: cuando uno intenta convertir un entero en una string, la string no es una subclase de entero, se lanzará una ClassCastException. - ConcurrentModificationException: ocurre cuando se intenta modificar o eliminar un objeto simultáneamente cuando se itera.
Ejemplo: No está permitido que un subproceso (ruta de ejecución independiente dentro de un programa) modifique una Colección cuando algún otro subproceso está iterando sobre él. La razón por la que esto sucede es que el resultado de la operación anterior se vuelve indefinido. - IllegalArgumentException (opcional) : cuando a alguna propiedad del valor de reemplazo se le ha pasado un argumento ilegal o inapropiado y así impide que se almacene en este mapa.
Ejemplo: si un método requiere una string no vacía como parámetro y la string de entrada es igual a nulo, se lanza IllegalArgumentException. - NullPointerException (opcional) : cuando la función dada apunta a nulo o newValue aún no se ha inicializado y, por lo tanto, se refiere a nulo, arroja una NullPointerException.
Ejemplo: llamar al método de instancia de un objeto nulo. - UnsupportedOperationException (Opcional) : lanzado para indicar que la operación solicitada no es compatible con este mapa.
Ejemplo: en la clase ArraysList, si usamos el método de agregar o quitar, se lanza la excepción UnsupportedOperationException.
Los siguientes programas ilustran el método merge(Key, Value, BiFunctional):
Programa 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}
Programa 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}
Referencia: https://docs.oracle.com/javase/10/docs/api/java/util/Map.html#replaceAll(java.util.function.BiFunction)
Publicación traducida automáticamente
Artículo escrito por VincentSimon y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA