线程“main”中的异常java.util.ConcurrentModificationException - 遍历set和delet

时间:2014-04-23 13:33:05

标签: java multithreading hashmap

请帮我解决这个问题。我有图表由结构HashMap表示>格拉夫;我需要通过该hashmap并设置和删除一些边缘。我怎样才能做到这一点 ?代码给我这个例外

Exception in thread "main" java.util.ConcurrentModificationException
        at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
        at java.util.HashMap$KeyIterator.next(Unknown Source)


      public String vratCestu() {
            String vrat = "";
            for(String s: this.graf.keySet()){
                if (this.graf.get(s).size() != 0)

                    for(String k : this.graf.get(s)){
                            this.graf.get(s).remove(k);
                            this.graf.get(k).remove(s);
                            vrat += k + "; ";

                    }
                }
                return vrat;
            }

2 个答案:

答案 0 :(得分:1)

使用for(String s: this.graf.keySet())而不是针对循环Iterator进行增强 使用增强型for循环迭代时,您无法修改集合。

答案 1 :(得分:0)

迭代时无法直接修改 HashSet