我有两个来自我的代码的字符串值 ID 和 Value ,我需要将其存储在地图中而不迭代地图,而是通过检查键值如果它存在于地图中。 该ID可以多次使用不同的值,在这种情况下,我将其添加到ID的现有条目中,并将该值与现有值一起添加
我用String和List创建了一个Map以添加值,但是我遇到了困难,
Map
如果该密钥不存在,请添加一个具有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中,该值将是具有单个值或多个值的列表。
答案 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);