HashMap類的merge(Key,Value,BiFunctional)方法用於使用給定的映射函數組合一個鍵的多個映射值。 Bucket實際上是數組的索引,該數組在HashMap實現中稱為表。因此,表[0]被稱為bucket0,表[1]被稱為bucket1,依此類推。
- 如果鍵不存在或與null關聯,則僅將鍵以及Hashmap中的相應值作為新條目輸出。
- 但是,如果鍵已經具有某個值,則“重新映射函數”會將舊值和新值都與給定鍵合並
- 如果key為null,則始終將其映射到存儲區0,因為由於NullPointerException而沒有為null鍵計算哈希
用法:
public V merge(K key, V value, BiFunction remappingFunction)
參數:此方法接受三個參數:
- Key:這是我們具有特殊價值的關鍵。如果兩個鍵的值相同,則將它們合並。
- Value:它是與存儲在存儲桶中的特定鍵相對應的索引。
- BiFunction:這是具有兩個自變量的函數,用於根據舊值和給定值計算新映射。
返回值:如果鍵不存在或與null關聯,則此方法返回鍵及其值。否則,如果鍵已經具有任何值,它將使用映射技術將舊值與新值合並。
以下示例程序旨在說明merge(Key,Value,BiFunctional)方法:
程序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}
程序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}
相關用法
- Java HashMap computeIfPresent(key, BiFunction)用法及代碼示例
- Java HashMap replaceAll(BiFunction)用法及代碼示例
- Java Properties compute(Key, BiFunction)用法及代碼示例
- Java Properties computeIfPresent(Key, BiFunction)用法及代碼示例
- Java HashMap computeIfAbsent()用法及代碼示例
- Java HashMap putIfAbsent(key, value)用法及代碼示例
- Java HashMap compute()用法及代碼示例
- Java HashMap replace(key, value)用法及代碼示例
- Java HashMap getOrDefault(key, defaultValue)用法及代碼示例
- Java HashMap forEach(BiConsumer)用法及代碼示例
- Java HashMap replace(key, oldValue, newValue)用法及代碼示例
- Java HashMap put()用法及代碼示例
注:本文由純淨天空篩選整理自VincentSimon大神的英文原創作品 HashMap merge(key, value, BiFunction) method in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。