从某个键的映射中获取值并将其添加为另一个条目

时间:2018-11-07 22:14:10

标签: java

  1. 我的第一张地图

    Map< String,Map< String,Object>> accounts = new HashMap< String,Map< String,Object>>();
    

    示例:

    {Entry01={DisplayName=Test01, ID=001, Status=A}, 
     Entry01={DisplayName=Test02, ID=002, Status=T}, 
     Entry52={DisplayName=Test52, ID=052, Status=A}}
    
  2. 我的第二张地图

    Map< String,Set< String>> groupMap = new HashMap< String,Set< String>>();
    

    示例:

    {001=[Value01, Value02], 
     002=[Value08, Value09, Value15], 
     013=[Value58, Value89, Value90]}
    

需要比较这两个映射,并根据第一个映射的ID密钥值进行比较,我需要从第二个映射中获取值,并将其添加回具有键名和值的第一个映射中。

我厌倦了遍历地图,但是我的地图上有很多条目,但是只有某些条目才有价值。

1 个答案:

答案 0 :(得分:0)

如果我很了解您的问题,则需要获取与Set<String>相对应的ID并将其添加到与ID 相同的子地图中>

  • 遍历配对
  • 找回ID
  • Set<String>中获取ID
  • set添加到值对中
for (Map.Entry<String, Map<String, Object>> account : accounts.entrySet()) {
    Map<String, Object> accountVal = account.getValue();
    String id = accountVal.getOrDefault("ID", "").toString();
    Set<String> setValues = entitlementMap.getOrDefault(id, Collections.emptySet());
    accountVal.put("name", new HashSet<>(setValues));
}

使用Code Demo,您将看到以下内容

// From
Entry52={Status=A, DisplayName=Test52, ID=052}
Entry01={Status=A, DisplayName=Test01, ID=001}
Entry02={Status=T, DisplayName=Test02, ID=002}

// To 
Entry52={Status=A, DisplayName=Test52, ID=052, name=[]}
Entry01={Status=A, DisplayName=Test01, ID=001, name=[Value01, Value02]}
Entry02={Status=T, DisplayName=Test02, ID=002, name=[Value15, Value09, Value08]}