Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在迭代列表时删除元素_Java_Collections_Foreach_Iterator - Fatal编程技术网

Java 在迭代列表时删除元素

Java 在迭代列表时删除元素,java,collections,foreach,iterator,Java,Collections,Foreach,Iterator,我试图使用迭代器从列表中删除元素,但出现以下异常: java.util.NoSuchElementException 代码: for(迭代器iter=list.listIterator();iter.hasNext();){ Punk p=iterator.next(); 如果(某些条件){ iterator.remove(); } 指数+=1; } 我只是每次在循环中使用一次iterator.next(),以便它移动到下一个元素。有人能帮忙吗?提前谢谢!非常感谢您的帮助。您使用的是迭代器,

我试图使用
迭代器
从列表中删除元素,但出现以下异常:

java.util.NoSuchElementException
代码:

for(迭代器iter=list.listIterator();iter.hasNext();){
Punk p=iterator.next();
如果(某些条件){
iterator.remove();
}
指数+=1;
}

我只是每次在循环中使用一次iterator.next(),以便它移动到下一个元素。有人能帮忙吗?提前谢谢!非常感谢您的帮助。

您使用的是
迭代器
,但您使用
iter
来迭代此列表。确保变量名正确无误

for (Iterator<Punk> iter = list.listIterator(); iter.hasNext(); ) {
    Punk p = iter.next();

    if (some condition ) {
        iter.remove();
    }
}
for(迭代器iter=list.listIterator();iter.hasNext();){
朋克p=iter.next();
如果(某些条件){
iter.remove();
}
}

您可以添加整个stacktrace吗?不确定
索引的用途,但它似乎与这个问题无关。您定义了iter,然后就不使用它了?迭代器从何而来?在for循环中,您将迭代器变量声明为
iter
,但从
iterator
中删除。这可以通过
list.removeIf(p->some condition)进一步减少
我更喜欢
while
循环方法。将
迭代器
放入
for
看起来。。。笨重的。@Aominètahnks赞成这个建议。但是我们使用的是Java7:)@Bucket谢谢。我创建了另一个迭代器并使用它。抱歉在这里浪费时间。有时我想知道这些愚蠢的错误怎么会花这么多时间:/在事后看来,这里发布的大多数问题都是“愚蠢的错误”。有时,当你连续几个小时盯着代码看得疲惫不堪时,这一点并不明显。只要我们找到解决方案,时间就不会浪费。
for (Iterator<Punk> iter = list.listIterator(); iter.hasNext(); ) {
    Punk p = iter.next();

    if (some condition ) {
        iter.remove();
    }
}