Método HashMap merge(key, value, BiFunction) en Java con ejemplos

El método merge(Key, Value, BiFunctional) de la clase HashMap se usa para combinar múltiples valores asignados para una clave usando la función de asignación dada. El cubo es en realidad un índice de array, esa array se llama tabla en la implementación de HashMap. Por lo tanto, la tabla [0] se conoce como cubo 0, la tabla [1] como cubo 1 y así sucesivamente.

  • Si la clave no está presente o está asociada con un valor nulo, simplemente genera la clave junto con el valor correspondiente en Hashmap como una nueva entrada.
  • Sin embargo, si la clave ya tiene algún valor, la función de reasignación fusiona los valores antiguos y nuevos con la clave dada.
  • En caso de que la clave sea nula, siempre se asigna al depósito 0, ya que el hash no se calcula para claves nulas debido a NullPointerException

Sintaxis:

public V merge(K key, V value,
    BiFunction remappingFunction)

Parámetros: Este método acepta tres parámetros:

  • Clave: que es la clave para la que tenemos un valor determinado. Si dos claves tienen el mismo valor, se fusionan.
  • Valor: que es el índice correspondiente a la clave particular que se almacena en el cubo.
  • BiFunction: que es la función que tiene dos argumentos que se usarán para calcular el nuevo mapeo a partir del valor anterior y el valor dado.

Valor devuelto: este método devuelve la clave junto con su valor si la clave no está presente o está asociada con un valor nulo. De lo contrario, si la clave ya tiene algún valor, fusiona el valor anterior con el valor nuevo utilizando la técnica de mapeo.

Los siguientes programas ilustran el método merge(Key, Value, BiFunctional):

Programa 1:

// Java program to demonstrate
// computeIfAbsent(Key, Function) method.
  
import java.util.*;
  
public class GFG {
  
    // Main method
    public static void main(String[] args)
    {
  
        // create a HashMap and add some values
        HashMap<Integer, String>
            map1 = new HashMap<>();
        map1.put(1, "L");
        map1.put(2, "M");
        map1.put(3, "N");
  
        HashMap<Integer, String>
            map2 = new HashMap<>();
        map2.put(1, "B");
        map2.put(2, "G");
        map2.put(3, "R");
  
        // print map details
        System.out.println("HashMap1: "
                           + map1.toString());
  
        System.out.println("HashMap2: "
                           + map2.toString());
  
        // provide value for new key which is absent
        // using computeIfAbsent method
        map2.forEach(
            (key, value)
                -> map1.merge(
                    key,
                    value,
                    (v1, v2)
                        -> v1.equalsIgnoreCase(v2)
                               ? v1
                               : v1 + ", " + v2));
  
        // print new mapping
        System.out.println("New HashMap: " + map1);
    }
}
Producción:

HashMap1: {1=L, 2=M, 3=N}
HashMap2: {1=B, 2=G, 3=R}
New HashMap: {1=L, B, 2=M, G, 3=N, R}

Programa 2:

// Java program to demonstrate
// computeIfAbsent(Key, Function) method.
  
import java.util.*;
  
public class GFG {
  
    // Main method
    public static void main(String[] args)
    {
  
        // create a HashMap and add some values
        HashMap<Integer, String>
            map1 = new HashMap<>();
        map1.put(1, "Ram");
        map1.put(2, "Rohan");
        map1.put(3, "Shivam");
  
        HashMap<Integer, String>
            map2 = new HashMap<>();
        map2.put(1, "Tushar");
        map2.put(10, "Satya");
        map2.put(12, "Sundar");
  
        // print map details
        System.out.println("HashMap1: "
                           + map1.toString());
  
        System.out.println("HashMap2: "
                           + map2.toString());
  
        // provide value for new key which is absent
        // using computeIfAbsent method
        map2.forEach(
            (key, value)
                -> map1.merge(
                    key,
                    value,
                    (v1, v2)
                        -> v1.equalsIgnoreCase(v2)
                               ? v1
                               : v1 + ", " + v2));
  
        // print new mapping
        System.out.println("New HashMap: " + map1);
    }
}
Producción:

HashMap1: {1=Ram, 2=Rohan, 3=Shivam}
HashMap2: {1=Tushar, 10=Satya, 12=Sundar}
New HashMap: {1=Ram, Tushar, 2=Rohan, 3=Shivam, 10=Satya, 12=Sundar}

Referencias: https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html#merge-KV-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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *