Java 将两个不同类型的地图合并为一个地图

Java 将两个不同类型的地图合并为一个地图,java,Java,我有两张不同类型的地图: class Type3{ Type1 type1; Type2 type2; // getters and setters... } Map<Integer,Type1> map1; Map<Integer,Type2> map2; 类别类型3{ 类型1类型1; 类型2类型2; //接球手和接球手。。。 } 地图map1; map2地图; 我想用同一个键将它们合并到一个贴图中。 喜欢他的: Map-map3=//merege-

我有两张不同类型的地图:

class Type3{
  Type1 type1;
  Type2 type2;

// getters and setters...

}


Map<Integer,Type1> map1;
Map<Integer,Type2> map2;
类别类型3{
类型1类型1;
类型2类型2;
//接球手和接球手。。。
}
地图map1;
map2地图;
我想用同一个键将它们合并到一个贴图中。 喜欢他的:
Map-map3=//merege-map1,map2。


我怎么做?

您可以使用
s:

Map<Integer,Type3> output =
    map1.entrySet()
        .stream()
        .collect(Collectors.toMap(Map.Entry::getKey,
                                  e -> new Type3(e.getValue(),map2.get(e.getKey()))));

您可以使用
Stream
s执行此操作:

Map<Integer,Type3> output =
    map1.entrySet()
        .stream()
        .collect(Collectors.toMap(Map.Entry::getKey,
                                  e -> new Type3(e.getValue(),map2.get(e.getKey()))));
如果Type1和Type2继承了相同的父项,则可以使用以下命令重新初始化映射:

如果Type1和Type2继承了相同的父项,则可以使用以下命令重新初始化映射:


感谢此解决方案。如果您遇到一个问题—map2 have key的情况在map1中不存在—该条目将不会创建。@user1137582这是真的。如果map1中可能有不在map2中的键,而vica中可能有不在map2中的键,则最好通过两个映射的键集的并集进行流式处理。由于此解决方案,您会遇到一个问题-如果map2中有map1中不存在的键,则该项将不会创建。@user1137582这是真的。如果map1中可能有map2中没有的键,而vica中可能有相反的键,那么最好通过两个映射的键集的并集进行流式处理。谢谢,但我正在寻找更简单的解决方案。谢谢,但我正在寻找更简单的解决方案。
Map<Integer,IType> mapCommon;
interface IType {

}
//Program Type1 & Type2 to be like this

class Type1 implements IType{..}

class Type2 implements IType{..}