Java HashMap merge(key, value, BiFunction)方法及示例

Java HashMap merge(key, value, BiFunction)方法及示例

HashMap类merge(Key, Value, BiFunctional) 方法用于使用给定的映射函数合并一个键的多个映射值。Bucket实际上是一个数组的索引,该数组在HashMap实现中被称为table。所以table[0]被称为bucket0,table[1]被称为bucket1,以此类推。

  • 如果键不存在或与null相关,它只是简单地将键与Hashmap中的相应值一起作为一个新条目输出。
  • 然而,如果键已经持有一些值,重映射函数将新旧两个值与给定的键合并。
  • 如果键是空的,它总是被映射到桶0,因为由于 NullPointerException ,哈希不计算空键。

语法

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-

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程