如何组合包含不同类型的两个HashMap对象?

时间:2017-04-12 06:09:35

标签: java collections hashmap

我有两个HashMap个对象定义为:

Map<String, String> requestParams = new HashMap<>();
Map<String, Boolean> requestParamForOauth = new HashMap<>();

如何合并这两张地图?

4 个答案:

答案 0 :(得分:1)

假设两个地图都包含相同的一组键,并且您想要“组合”这些值,那么您要寻找的是一个Pair类,例如,请参阅here

你只需迭代其中一张地图;并从两个地图中检索值;并创建一对;并将其推送到结果图中。

唯一的缺点是没有你可以使用的“官方”配对课程(请参阅here了解更多关于此事的想法)。

或者,如果这些“组合”值存在“更深层”的含义(超出简单的“元组/对”语义),您可以创建自己的包含这两个值的类。

答案 1 :(得分:0)

您的密钥属于同一类型(String),但这些值甚至不是由接口或超类相关,您需要定义Map<String, Object>并使用Map#putAll方法

Map<String, String> requestParams = new HashMap<>();
Map<String, Boolean> requestParamForOauth = new HashMap<>();
Map<String, Object> requestParamForOauth2 = new HashMap<>();
requestParamForOauth2.putAll(requestParams);
requestParamForOauth2.putAll(requestParamForOauth);

答案 2 :(得分:0)

如果您想使用一个列表来存储您可以的所有数据 使用一个HashMap<String,Object>

答案 3 :(得分:0)

Map同时显示相同的密钥时,您想要做什么?如果您想同时保留StringBoolean,那么您需要一张如下所示的地图:Map<String, Pair(String, Boolean)>。如果您只想保留一个值,那么Map<String, Object>就是您想要的。