在 Java 中,你可以使用不同的方式将两个 Map 合并为一个 Map。下面我将介绍几种常见的实现方式,并提供每种方式的步骤流程和示例代码。为了演示方便,我们假设你要合并的两个 Map 的类型都是 Map<String, String>
。
这是最简单的方法之一,使用 putAll
方法将一个 Map 中的所有键值对放入另一个 Map 中。
Map<String, String> map1 = new HashMap<>();
map1.put("key1", "value1");
map1.put("key2", "value2");
Map<String, String> map2 = new HashMap<>();
map2.put("key3", "value3");
map2.put("key4", "value4");
map1.putAll(map2);
通过 Stream API,你可以将两个 Map 的 Entry 流合并,然后将其收集为一个新的 Map。
import java.util.*;
import java.util.stream.Collectors;
Map<String, String> mergedMap = Stream.of(map1, map2)
.flatMap(map -> map.entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
Apache Commons Collections 库提供了 MapUtils
类,其中包含了合并 Map 的方法。
Maven 依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
Gradle 依赖:
implementation 'org.apache.commons:commons-collections4:4.4'
import org.apache.commons.collections4.MapUtils;
Map<String, String> mergedMap = MapUtils.mergeMaps(map1, map2);
Google Guava 库中的 Maps
类提供了一种合并 Map 的方法。
Maven 依赖:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1.1-jre</version>
</dependency>
Gradle 依赖:
implementation 'com.google.guava:guava:30.1.1-jre'
import com.google.common.collect.Maps;
Map<String, String> mergedMap = Maps.newHashMap();
mergedMap.putAll(map1);
mergedMap.putAll(map2);
这些方法中的每一个都可以用来合并两个 Map。选择使用哪种方法取决于你的代码库中是否已经引入了某些第三方库,以及你更喜欢哪种代码风格。