Java:如何从HashMap中正确删除值,而不是基于键

时间:2016-11-28 13:05:56

标签: java android hashmap set

我有一个Singleton类,里面有一个HashMap。 HashMap由StringSet<String>组成:

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

我想要实现什么?

Set内的所有Map值中移除给定项目。例如:

mMap.put(keyName, new HashSet<String>())
....
mViewsSwipeStates.get(keyName).add("1");
mViewsSwipeStates.get(keyName).add("2");
mViewsSwipeStates.get(keyName).add("3");
....
//Remove an item from the set 
 mMap.values().remove("3"); //Does not work

Set内删除项目的正确方法是什么?

3 个答案:

答案 0 :(得分:4)

我假设您要从productCode的所有值中删除Map(而不仅仅是从特定键的值中删除)。

您必须遍历Map的所有值,并从每个值中删除所需的元素:

mMap.values().forEach(v->v.remove(productCode));

此代码假定Map中没有空值。

编辑:

在Java 7中,您可以写:

for (Set<String> value : mMap.values()) {
    value.remove(productCode);
}

答案 1 :(得分:0)

迭代所有地图条目,改变每个条目的值:

map.forEach((k, v) -> v.remove(productCode)};

答案 2 :(得分:0)

使用java 8和lambda表达式

map.forEach((key, value) -> value.remove(productCode));