避免使用map.get(key)方法

Mou*_*hna 11 java keyset

我有以下代码,但我看到在迭代地图键时从地图检索值keySet()是一个错误,即使使用findBugs我得到警告WMI_WRONG_MAP_ITERATOR

for(String elementId : mapElements.keySet()){

     element = mapElements.get(elementId); 

     doSomething(element);
}
Run Code Online (Sandbox Code Playgroud)

那么为什么这不好,我该如何解决呢?

谢谢.

Jon*_*eet 25

如果你在迭代地图中的所有内容,你可能会这样做:

for (Map.Entry<String, String> entry : mapElements.entrySet()) {
    String key = entry.getKey();
    String value = entry.getValue();
    // Use the key and the value
}
Run Code Online (Sandbox Code Playgroud)

或者如果你真的不需要密钥,只需迭代值:

for (String value : mapElements.values()) {
    doSomething(value);
}
Run Code Online (Sandbox Code Playgroud)

编辑:语法