- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- public class Test{
- public static void main(String[] args){
- List<Integer> list = new ArrayList<Integer>();
- list.add(1);
- list.add(2);
- list.add(3);
- list.add(5);
-
- Iterator<Integer> it = list.iterator();
- int i = 0;
- while(it.hasNext()){
- i++;
- System.out.println(it.next());
- System.out.println(it.next());
- System.out.println(it.next());
- System.out.println(it.next());
- //System.out.println(it.next()); //这里不注释掉,就会抛出java.util.NoSuchElementException异常
- }
- System.out.println(i);
- }
- }
复制代码 你的情况就相当于上面这个代码,出现这个问题不是泛型引起的,而是没有元素了.
it.next();返回下一个元素,你在代码里多次使用了it.next();每调用一次it.next();就返回下一个值
在我的这段演示代码中,list里的元素都取出来了,而 i 最终的值是1,说明只循环了一次.更证明it.next();每次都是取列表中的下一个元素
如果没有下一个元素了,就跑java.util.NoSuchElementException异常了
while里的 it.hasNext() ,就是判断是否还有下一个元素 |