Método HashMap merge (chave, valor, BiFunction) em Java com exemplos
O método merge (Key, Value, BiFunctional) da classe HashMap é usado para combinar vários valores mapeados para uma chave usando a função de mapeamento fornecida. Bucket é na verdade um índice de array, esse array é chamado de tabela na implementação de HashMap. Portanto, a tabela [0] é referida como bucket0, a tabela [1] como bucket1 e assim por diante.
- Se a chave não estiver presente ou estiver associada a nulo, ele simplesmente exibirá a chave junto com o valor correspondente no Hashmap como uma nova entrada.
- No entanto, se a chave já contém algum valor, a Função de Remapeamento mescla os valores antigos e novos com a chave fornecida
- Caso a chave seja nula, ela é sempre mapeada para o intervalo 0, pois o hash não é calculado para chaves nulas devido a NullPointerException
Sintaxe:
public V merge(K key, V value, BiFunction remappingFunction)
Parâmetros: este método aceita três parâmetros:
- Chave: qual é a chave para a qual temos um valor particular. Se duas chaves tiverem o mesmo valor, elas serão mescladas.
- Valor: que é o índice correspondente à chave particular que está armazenada no balde.
- BiFunction: que é a função que possui dois argumentos a serem usados para calcular o novo mapeamento a partir do valor antigo e do valor dado.
Valor de retorno: este método retorna a chave junto com seu valor se a chave não estiver presente ou estiver associada a nulo. Ou se a chave já contém algum valor, ela mescla o valor antigo com o novo valor usando a técnica de mapeamento.
Os programas abaixo ilustram o método de mesclagem (chave, valor, biFuncional):
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} Novo 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} Novo HashMap: {1 = Ram, Tushar, 2 = Rohan, 3 = Shivam, 10 = Satya, 12 = Sundar}
Referências: https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html#merge-KV-java.util.function.BiFunction-
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva