我的第一张地图
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}}
我的第二张地图
Map< String,Set< String>> groupMap = new HashMap< String,Set< String>>();
示例:
{001=[Value01, Value02],
002=[Value08, Value09, Value15],
013=[Value58, Value89, Value90]}
需要比较这两个映射,并根据第一个映射的ID密钥值进行比较,我需要从第二个映射中获取值,并将其添加回具有键名和值的第一个映射中。
我厌倦了遍历地图,但是我的地图上有很多条目,但是只有某些条目才有价值。
答案 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]}