English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Wenn der angegebene Schlüssel nicht existiert, fügt die Java HashMap merge() Methode den angegebenen Schlüssel/Wertzuordnung wird in die Hash-Mapping eingefügt.
Wenn jedoch der angegebene Schlüssel bereits mit einem Wert verbunden ist, ersetzt diese Methode den alten Wert durch das Ergebnis der angegebenen Funktion.
Syntax der merge() Methode:
hashmap.merge(key, value, remappingFunction)
merge() Methode verwendet3Parameter:
key - Den Wert angeben, der mit dem Schlüssel verbunden werden soll
value - Wenn der key bereits mit jedem Wert verbunden ist, dann der Wert, der mit dem key verbunden ist
remappingFunction - Wenn der Schlüssel bereits mit einem Wert verbunden ist, wird das Ergebnis mit dem Schlüssel verbunden.
Rückgabe des neuen Wertes, der mit dem Schlüssel (key) verbunden ist
Wenn kein Wert mit dem Schlüssel (key) verbunden ist, wird null zurückgegeben
Hinweis:Wenn das Ergebnis von remappingFunction null ist, wird die Zuordnung des angegebenen Schlüssels gelöscht.
import java.util.HashMap; class Main { public static void main(String[] args) { //创建 HashMap HashMap<String, Integer> prices = new HashMap<>(); //向HashMap插入条目 prices.put("Shoes", 200); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: ") + prices); int returnedValue = prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue); System.out.println("Der Preis des Hemdes: ") + returnedValue); //Drucken Sie die aktualisierte HashMap aus System.out.println("Aktualisierte HashMap: ") + prices); } }
输出结果
HashMap: {Pant=150, Bag=300, Shoes=200} Der Preis des Hemdes: 100 Aktualisierte HashMap: {Pant=150, Shirt=100, Bag=300, Shoes=200}
Im obigen Beispiel haben wir eine Hash-Mapping namens prices erstellt. Beachten Sie den Ausdruck
prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue)
Hier verwenden wir den Lambda-Ausdruck (oldValue, newValue) -> oldValue + newValue) als remappingFunction-Funktion. Für mehr Informationen zu Lambda-Ausdrücken besuchen SieJava Lambda-Ausdrücke.
Da der Schlüssel Shirt in prices nicht existiert, wird der merge()-Methode Shirt=100 Einträge in die Map eingefügt. Und das Ergebnis von remappingFunction wird ignoriert.
import java.util.HashMap; class Main { public static void main(String[] args) { // 创建 HashMap HashMap<String, String> countries = new HashMap<>(); // 向HashMap插入条目 countries.put("Washington", "America"); countries.put("Canberra", "Australia"); countries.put("Madrid", "Spain"); System.out.println("HashMap: ") + countries); // Kombination der Mapping für den Washington-Schlüssel String returnedValue = countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue); System.out.println("Washington: ") + returnedValue); // Drucken Sie die aktualisierte HashMap aus System.out.println("Aktualisierte HashMap: ") + countries); } }
输出结果
HashMap: {Madrid=Spain, Canberra=Australia, Washington=America} Washington: America/USA Aktualisierte HashMap: {Madrid=Spain, Canberra=Australia, Washington=America/USA},
In diesem Beispiel haben wir eine als countries bezeichnete Hash-Mapping erstellt. Beachten Sie den Ausdruck
countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue)
在这里,我们使用了lambda表达式(oldValue, newValue) -> oldValue + "/" + newValue) 作为 remappingFunction。
由于键Washington已经存在countries中,所以旧值将由remappingFunction返回的值替换。因此,Washington 的映射包括值 America/USA。
import java.util.HashMap; class Main { public static void main(String[] args) { //创建 HashMap HashMap<String, Integer> prices1 = new HashMap<>(); //向HashMap插入条目 prices1.put("Pant", 230); prices1.put("Shoes", 350); System.out.println("HashMap 1: \ + prices1); //创建另一个hashmap HashMap<String, Integer> prices2 = new HashMap<>(); //向HashMap插入条目 prices2.put("Shirt", 150); prices2.put("Shoes", 320); System.out.println("HashMap 2: \ + prices2); // forEach()访问prices2的每个条目 // merge()将每个条目从prices2插入到prices1 prices2.forEach((key, value) -> prices1.merge(key, value, (oldValue, newValue) -> { //返回较小的值 if (oldValue < newValue) { return oldValue; } else { return newValue; } }); System.out.println("合并后的 HashMap: ", + prices1); } }
输出结果
HashMap 1: {Pant=230, Shoes=350} HashMap 2: {Shirt=150, Shoes=320} 合并后的 HashMap: {Pant=230, Shirt=150, Shoes=320}
在上面的示例中,我们创建了两个名为prices1和prices2的哈希映射。注意代码,
prices2.forEach((key, value) -> prices1.merge(key, value, (oldValue, newValue) -> { if (oldValue < newValue) { return oldValue; } else { return newValue; } });
在这里,HashMap forEach()方法访问哈希表prices2的每个条目,并将其合并到哈希表prices1中。 我们使用了两个lambda表达式:
(key, value) -> prices.merge(...) - es den Zugriff auf prices1jeder Eintrag und leitet ihn an die merge() -Methode weiter.
(oldValue, newValue) -> {...} - Dies ist eine Remapping-Funktion (remappingFunction). Sie vergleicht zwei Werte und gibt den kleineren zurück.
Da der Schlüssel Shoes in beiden Hash-Mappings existiert, wird der Wert von Shoes durch das Ergebnis der Remapping-Funktion (remappingFunction) ersetzt.
Wir können auch die putAll() -Methode verwenden, um zwei Hash-Mappings zu kombinieren. Wenn jedoch beide Hash-Mappings denselben Schlüssel haben, wird der alte Wert durch den neuen Wert ersetzt.
Im Gegensatz zu merge() bietet die putAll() -Methode keine Remapping-Funktion. Daher können wir den Wert nicht bestimmen, der für wiederholte Schlüssel gespeichert werden soll.
Für mehr Informationen über die putAll() -Methode besuchen Sie bitteJava HashMap putAll().