java.util.Hashtable.merge() 方法用于合并一个键的多个映射值。如果指定的键尚未与值或 null 关联,则将其与给定的非 null 值关联。否则,用给定重映射函数的结果替换关联值,或者如果结果为空则删除。
如果函数返回 null,则映射将被删除。如果函数本身抛出(未经检查的)异常,则重新抛出异常,并且当前映射保持不变。
语法
public V merge(K key,
V value,
BiFunction<? super V,? super V,? extends V> remappingFunction)
这里,K和V是键的类型
参数
key | 指定容器所维护的key将关联结果值。 |
value | 指定要与关联的现有值合并的非空值与键关联,或者如果没有现有值或空值与键关联,则与键关联。 |
remappingFunction | 指定重新计算值(如果存在)的函数。 |
返回值
返回与指定的键,如果没有值与该键关联,则返回 null。
异常
不适用。
示例:
在示例中下面, java.util.Hashtable.merge() 方法用于合并一个键的多个映射值。
import java.util.*;
public class MyClass {
public static void main(String[] args) {
//创建哈希表
Hashtable<Integer, String> Htable1 = new Hashtable<Integer, String>();
Hashtable<Integer, String> Htable2 = new Hashtable<Integer, String>();
//填充Htable1
Htable1.put(101, "John");
Htable1.put(102, "Marry");
Htable1.put(103, "Kim");
//填充Htable2
Htable2.put(101, "M");
Htable2.put(102, "F");
Htable2.put(103, "M");
//打印哈希表
System.out.println("Htable1 contains: " + Htable1);
System.out.println("Htable2 contains: " + Htable2);
//将两个Hashtable合并到Htable1中
Htable2.forEach((k,v) ->
Htable1.merge(k, v, (v1, v2) ->
(v1 == v2) ?
v1 : v1 + ", " + v2 )
);
//打印哈希表
System.out.println("Htable1 contains: " + Htable1);
}
}
上述代码的输出将是:
Htable1 contains: {103=Kim, 102=Marry, 101=John}
Htable2 contains: {103=M, 102=F, 101=M}
Htable1 contains: {103=Kim, M, 102=Marry, F, 101=John, M}