
关于JAVA迭代器的问题: public static void main(String[] args) {
publicstaticvoidmain(String[]args){Collectionc=newArrayList();Strings1="123";Strings2...
public static void main(String[] args) {
Collection c = new ArrayList();
String s1 ="123";
String s2 ="456";
c.add(s1);
c.add(s2);
//方法1:
Iterator it = c.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//方法2
while(c.iterator().hasNext()){
System.out.println(c.iterator().next());
}
方法1和2有运行结果不一样,为何? 展开
Collection c = new ArrayList();
String s1 ="123";
String s2 ="456";
c.add(s1);
c.add(s2);
//方法1:
Iterator it = c.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//方法2
while(c.iterator().hasNext()){
System.out.println(c.iterator().next());
}
方法1和2有运行结果不一样,为何? 展开
3个回答
展开全部
方法2死循环了,直接在循环的判断里调用c.iterator().hasNext()每次会获得一个新的iterator,它调用hasNext(),指针每次会指向第一个,也就是true,判断结束后iterator对象也就没用了,以后每次循环都会创建新的iterator实例,所以不要这么写,用方法1的写法就OK
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询