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); } }
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); } }
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