當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java HashMap merge(key, value, BiFunction)用法及代碼示例


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}

參考文獻: https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html#merge-K-V-java.util.function.BiFunction-



相關用法


注:本文由純淨天空篩選整理自VincentSimon大神的英文原創作品 HashMap merge(key, value, BiFunction) method in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。