首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.util.ConcurrentModificationException & iteration?

java.util.ConcurrentModificationException & iteration?
EN

Stack Overflow用户
提问于 2014-11-18 03:02:42
回答 3查看 228关注 0票数 0

我对Arraylist和迭代器非常陌生&这是我第一次遇到这个异常。我有一个ArrayList u,我想做以下算法:

代码语言:javascript
复制
for (Character c:u){

    if(k==1){           //base case

        if(isAnswer(s+u.get(0)))

            System.out.println(s+u.get(0)+" is the correct sequence."+ '\n');
        return;
    }

    else{
        u.remove(c);
        puzzleSolve(k-1, s+c , u);
        u.add(c);
        removeLastChar(s);
    }

    } //end of for each

当我搜索这个异常时,我发现我不能删除数组列表上的iterms weth for each &我需要使用迭代器,但是我不知道我必须把while(iter.hasNext())放在哪里&怎么放这段代码这样的东西。如果你能帮助我,我将不胜感激。

PS。S是字符串(初始为空)&k是int

EN

回答 3

Stack Overflow用户

发布于 2014-11-18 03:06:07

我必须如何准确地将while(iter.hasNext())

您可以使用iterator,如下所示:

代码语言:javascript
复制
Iterator<Character> iter = u.iterator();
while(iter.hasNext())
{
  Character c = iter.next();
  .....
}

使用泛型初始化列表:List<Character> u = new ArrayList<Character>();

提示:在适用的情况下使用iter.remove()iter.add(),而不是u.remove()u.add()

你需要从这里开始:http://www.tutorialspoint.com/java/java_using_iterator.htm

票数 1
EN

Stack Overflow用户

发布于 2014-11-18 03:08:14

试试这个:

代码语言:javascript
复制
Iterator<Character> iter = u.iterator();
while (iter.hasNext())
{
    Character currentChar = iter.next();

    if(k==1){           //base case

        if(isAnswer(s+u.get(0)))

        System.out.println(s+u.get(0)+" is the correct sequence."+ '\n');
        return;
    }

    else{
         iter.remove();
         puzzleSolve(k-1, s+currentChar  , u);
         u.add(currentChar);
         removeLastChar(s);
    }

}

票数 1
EN

Stack Overflow用户

发布于 2014-11-19 17:39:31

当您使用foreach循环时,您隐式地使用了迭代器

当集合被“同时”修改时,除了迭代器之外,通过任何方式通过一个迭代器来修改集合,就会发生ConcurrentModificationException

因此,使用迭代器

代码语言:javascript
复制
Iterator<Character> iter = u.iterator();
while (iter.hasNext())

以防您需要修改循环中的集合。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26979939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档