从 Java HashMap 中删除零值

San*_*ans 2 java hashmap

我有一个HashMap浮点值。

HashMap<Integer,Float> map : {(1,0.0),(2,0.0),(3,2000.0),(4,3000.0)}
Run Code Online (Sandbox Code Playgroud)

我想用零值删除其中的所有条目。结果应该是:

 map : {(3,2000.0),(4,3000.0)}
Run Code Online (Sandbox Code Playgroud)

更新:我使用的是 Java 7

LuC*_*Cio 5

从 Java 8 开始,您可以简单地使用

map.values().removeIf(f -> f == 0f);
Run Code Online (Sandbox Code Playgroud)

根据JavaDoc这将删除map满足给定谓词的所有元素。

编辑
当你更新你的问题,您使用的是Java 7的使用Iteratorvalues()

Iterator<Float> iterator = map.values().iterator();
while (iterator.hasNext()) {
    if (iterator.next() == 0f) {
        iterator.remove();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为根据JavaDoc map.values()

返回Collection此映射中包含的值的视图。集合由地图支持,因此对地图的更改会反映在集合中,反之亦然。