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();
}
}