使用键值返回地图中的条目集

时间:2018-11-06 21:10:29

标签: java

我有两个来自我的代码的字符串值 ID Value ,我需要将其存储在地图中而不迭代地图,而是通过检查键值如果它存在于地图中。 该ID可以多次使用不同的值,在这种情况下,我将其添加到ID的现有条目中,并将该值与现有值一起添加

我用String和List创建了一个Map以添加值,但是我遇到了困难,

Map > accessMap = new HashMap >();

如果该密钥不存在,请添加一个具有ID和Value(作为列表)的新条目。

如果ID已经存在于地图中,如何在不迭代地图的情况下在地图中查找键并获取entrySet并单独添加值。

示例

while(accessList.hasNext()){


....


....

String id = accessEntry.get(ID);

String value = accessEntry.get(Value);


/*Add the id and value to the map if not present, if ID is present add the    *value alone to the entrySet.Value (which is a list)
*/

}

必须将ID和值添加到地图中,以检查ID是否已存在于地图中(如果未创建新条目)。

accessList可能具有许多具有不同值的ID引用,在这种情况下,应将值添加到已存在条目的entrySet中,该值将是具有单个值或多个值的列表。

2 个答案:

答案 0 :(得分:1)

public static void add(Map<String, Set<String>> map, String key, String value) {
    map.compute(key, (id, values) -> {
        (values = Optional.ofNullable(values).orElseGet(LinkedHashSet::new)).add(value);
        return values;
    });
}

对于值,最好使用Set来排除重复项。

答案 1 :(得分:0)

使用computeIfAbsent()List初始化id,如果还不存在,则只需在其中添加value

entitlementMap.computeIfAbsent(id, s -> new ArrayList<>()).add(value);