黑马程序员技术交流社区
标题:
迭代器问题
[打印本页]
作者:
郑庆伟
时间:
2012-7-6 17:52
标题:
迭代器问题
本帖最后由 郑庆伟 于 2012-7-6 18:37 编辑
import java.util.*;
class CollectionDemo
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add("java01");
al.add("java02");
al.add("java03");
al.add("java04");
ListIterator li = al.listIterator();
while(li.hasNext())
{
Object obj = li.next();
if(obj.equals("java02"))
li.set("java006");
}
sop("hasNext():"+li.hasNext());//为什么输出是false,hasNext():不是从集合中开头开始吗?毕老师讲迭代器遍历结束后指针在最后一个元素后面,所以才为fale, //那么hasNext()跟迭代器的遍历有什么关系?
sop("hasPreViouse()"+li.hasPrevious());
}
作者:
杨朔
时间:
2012-7-6 18:05
这一道题你错的原因最主要还是大意了,在你的 sop("hasNext():"+li.hasNext());这句话
执行之前,是不是有一个while的迭代语句,在这句 while(li.hasNext())执行完之后,指针肯定
是在最后面。这道题中你要是把前面的迭代语句去了就会打印你需要的结果了。
作者:
郑庆伟
时间:
2012-7-6 18:17
你说的我理解,这里面的指针指的是什么呢?
作者:
李伟
时间:
2012-7-6 18:17
while(li.hasNext())
{
Object obj = li.next();
if(obj.equals("java02"))
li.set("java006");
}//
执行完while循环到这已经遍历到集合的结尾了
sop("hasNext():"+li.hasNext());//
所以li.hasNext()在这已经是false了
作者:
郑庆伟
时间:
2012-7-6 18:22
这里whlie循环可以理解成是在坐火车,循环结束相当于到了终点站,那么li.hasNext()可以理解成列车员报站可以这样理解吧
作者:
万宝东
时间:
2012-7-6 18:27
while(li.hasNext()) //这个循环结束了,迭代器就指向最后一个元素的后面了。所以你下面的的sop("hasNext():"+li.hasNext()); 这句话是false。
{
Object obj = li.next();
if(obj.equals("java02"))
li.set("java006");
}
sop("hasNext():"+li.hasNext());
还有就会你问的指针是什么?这个问题呢 。。。
java中是没有指针的,在java中那个叫做引用。类似于C中的指针。因为迭代器操作的是List集合,他的底层结构是数组结构,集合中的元素并没有存放在他本身里,放的是每个对象的引用。然后根据这些引用找到对象。
不知道这么说你明白吗。
作者:
郑庆伟
时间:
2012-7-6 18:34
楼上的虽然还是有些疑惑但是你说的我基本上明白了,这里的指针应该是比较底层的东西了。我继续看下面的内容了非常感谢。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2