我有一个包含元素 1 到 10 的列表。 我尝试从中删除素数 2,3,5,7,然后使用迭代器打印列表的其余部分。但是此代码抛出 NoSuchElementException。 这是我的代码:
public static void editerate2(Collection<Integer> list3)
{
Iterator<Integer> it=list3.iterator();
while(it.hasNext())
{
if(it.next()==2 || it.next()==3 || it.next() ==5 || it.next()==7 )
{
it.remove();
}
}
System.out.println("List 3:");
System.out.println("After removing prime numbers : " + list3);
}
这样做的正确方法是什么? 另外,使用“|”有什么区别?和“||” ???
最佳答案
每次调用 it.next()
时,迭代器都会前进到下一个元素。
我认为这不是您想要做的事情。
你应该这样做:
Iterator<Integer> it = list.iterator();
while (it.hasNext()) {
Integer thisInt = it.next();
if (thisInt == 2 || thisInt == 3 || thisInt == 5 || thisInt == 7) {
it.remove();
}
}
<小时/>
| 之间的区别和||:
如果您使用 ||
并且第一部分为 true,则不会评估第二部分。
如果您使用 |
这两个部分将始终被评估。
这对于这样的情况很方便:
if (person == null || person.getName() == null) {
// do something
}
如果您使用 |
并且 person 为 null,上面的代码片段将抛出 NullPointerException。
这是因为它会评估条件的两个部分,而后半部分将取消引用空对象。
关于java - 在 Java 中使用迭代器的多个 If 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13831852/