HashMap迭代和删除元素

时间:2018-03-09 10:53:28

标签: java

public void execute(HashMap<String,Coordonnee >c)
{
    c.forEach((k,v) -> {
        p = m.getMin(c);
        sky.add(p);
        c.remove(p.getNom());
    });
}

这会抛出java.util.ConcurrentModificationException

我该如何解决?

2 个答案:

答案 0 :(得分:0)

  1. 使用removeIf函数: map.entrySet().removeIf
  2. 使用迭代器:

    Iterator<Object> it = map.keySet().iterator();
    
    while (it.hasNext())
    {
       it.next();
       if (something)
           it.remove();
    }
    

答案 1 :(得分:0)

在循环播放时,您无法删除列表中的元素。你应该使用Iterator。

public void execute(HashMap<String,Coordonnee >c)
{
    Iterator cItr = c.iterator();
    while(cItr.hasNext())
    {
        c = cItr.next();
        p = m.getMin(c);
        sky.add(p);
        cItr.remove(p.getNom());
    }
}