运行程序:
<pre name="code" class="java"><pre name="code" class="java">import java.util.Iterator;
import java.util.List;
public class ItDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("da");
list.add("xiao");
list.add("chang");
Iterator<String> it = list.iterator();
while(it.hasNext()){
System.out.println(it.next());
System.out.println(it.next().length());
}
}
}
结果如下:
da
4
chang
Exception in thread "main" java.util.NoSuchElementException
at java.util.ArrayList$Itr.next(Unknown Source)
at collections.ItDemo.main(ItDemo.java:16)
其实我本意是想输出类集中元素的内容及内容的长度,但输出元素"da"后输出的不是其长度2,而是4,其实4实际上输出的是"xiao",而输出"chang"后,发生异常NoSuchElementException,顾名思义,在输出"chang"以后list里已经没有元素了,于是发现以下问题:
next()方法指向的是list的下一个元素!
因此很容易就明白为什么会出现以上的输出结果。代码改成以下即可:
while(it.hasNext()){
String str = it.next();
System.out.println(str);
System.out.println(str.length());
}