//删除值为空的项
//集合类的都不能在循环的时候删除,因为删除元素后集合发生改变继而不能循环了
for(String str : addMap.keySet())
{
double value = addMap.get(str);
if(value == 0.0)
{
addMap.remove(str);
}
}
Set mapset = addMap.entrySet();
Iterator iterator = mapset.iterator();
while(iterator.hasNext())
{
Map.Entry mapEntry = (Map.Entry)iterator.next();
String key = mapEntry.getKey().toString();
Double value =(Double)mapEntry.getValue();
if(value == 0.0)
{
iterator.remove();
}
}
第一种删除方式是错误的,因为集合在循环的时候不能删除元素,否则会导致集合发生改变,继而跳出循环,不能正确执行循环的过程。
第二种删除循环的方式是正确的,因为只是对 Map 中元素循环一遍。而且需要注意的是:在遍历过程中是不能用map.remove(key),而是用keys.remove().