首先不评价您的代码。。。竟然说第一遍跑起了。。骗人。{:soso_e109:}拿分不容易啊,老师,我是修改了半小时之后才跑起的,半夜12点在挣分数的孩子你伤不起啊。。给个分吧。。。
第一次遍历之后迭代器已经读到了集合的末尾,已经没有next了,迭代器.hasNext()返回值为假,所以会结束第一次循环;第二次循环一开始,这时迭代器就已经处在末尾的位置,所以直接返回“假”退循环。
如果要第二次使用迭代器的话,需要把迭代器回置。使用语句 T = a2.iterator(); 即可
另附修改后代码(您的代码花括号少了我就不说什么了。。为什么迭代器在使用的时候和声明的时候会不是同一个名字??{:soso_e103:}):
import java.util.*;
class IrTest
{
public void BianLi()
{
ArrayList<String> a1 = new ArrayList<String>();
a1.add("张三");
a1.add("李四");
a1.add("王二");
Iterator T = a1.iterator();
while(T.hasNext())
{
System.out.println("第一次遍历");
System.out.println(T.next());
}
T = a1.iterator(); //重复使用迭代器之重点。。。
while(T.hasNext())
{
System.out.println("第二次遍历。");
System.out.println(T.next());
}
}
}
class TestBl
{
public static void main(String[] args)
{
IrTest a=new IrTest();
a.BianLi();
}
} |