我有一个Singleton
类,里面有一个HashMap。 HashMap由String
和Set<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
内删除项目的正确方法是什么?
答案 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));