Java:如何正确地从不基于键的HashMap中删除值

Java:如何正确地从不基于键的HashMap中删除值,java,android,hashmap,set,Java,Android,Hashmap,Set,我有一个Singleton类,里面有一个HashMap。HashMap由字符串和集合组成: 从集合中删除项目的正确方法是什么?我假设您希望从映射的所有值(而不仅仅是特定键的值)中删除产品代码 您必须迭代映射的所有值,并从每个值中删除所需的元素: mMap.values().forEach(v->v.remove(productCode)); 此代码假定映射中没有空值 编辑: 在Java 7中,您可以编写: for (Set<String> value : mMap.value

我有一个
Singleton
类,里面有一个HashMap。HashMap由
字符串
集合
组成:


集合
中删除项目的正确方法是什么?

我假设您希望从
映射的所有值(而不仅仅是特定键的值)中删除
产品代码

您必须迭代
映射的所有值,并从每个值中删除所需的元素:

mMap.values().forEach(v->v.remove(productCode));
此代码假定
映射中没有空值

编辑:

在Java 7中,您可以编写:

for (Set<String> value : mMap.values()) {
    value.remove(productCode);
}
for(设置值:mMap.values()){
值。删除(productCode);
}

我假设您希望从
映射的所有值中删除
productCode
(而不仅仅是从特定键的值中删除)

您必须迭代
映射的所有值,并从每个值中删除所需的元素:

mMap.values().forEach(v->v.remove(productCode));
此代码假定
映射中没有空值

编辑:

在Java 7中,您可以编写:

for (Set<String> value : mMap.values()) {
    value.remove(productCode);
}
for(设置值:mMap.values()){
值。删除(productCode);
}

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

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

迭代所有映射项,对每个映射项的值进行变异:

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

使用Java8和lambda表达式

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

使用Java8和lambda表达式

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

您需要首先从映射中获取项目:mViewsSwipeStates.get(keyName).remove(productCode);您需要首先从映射中获取项目:mViewsSwipeStates.get(keyName).remove(productCode);是的,但我写这篇文章是为了一个安卓应用程序,我忘了提了,很抱歉。但是,如果没有lambda,你能提供同样的东西吗?@user3182266当然可以,但我写这篇文章是为了一个Android应用程序,我忘了提到它,对此表示抱歉。但是如果没有lambda,你能提供同样的东西吗?@user3182266当然