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{..}