A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  ArrayList list = new ArrayList();
  list.add("jude");
  list.add("jack");
  list.add("luca");
  list.add("lucas");
  list.add("honda");
  list.add("tokyo");
  System.out.println(list);
  //获取ListIterator对象
  ListIterator it = list.listIterator();
  //判断该集合中是否有上一个元素
  while(it.hasPrevious()){
   //迭代该对象的上一个元素
   Object obj = it.previous();
   //获取并打印该对象中的元素
   System.out.print(obj +  "    "+ "");

为什么迭代器在逆向遍历的时候打印不出来?

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 淡定

查看全部评分

7 个回复

倒序浏览
楼主请听我言
迭代器的本质是指针的遍历,在你生成一个集合的迭代器的时候
如ListIterator ll=list.ListIterator();
这只是他的默认的构造方法,这个迭代器的指针在起始处
楼主可以看一下API文档。这样定义
ListIterator ll=list.ListIterator(list.size());
那么指针就到了list这个集合的结尾处,你现在就可以ll.hasPrevious(),不能ll.hasNext()
注:那个参数也许是list.size()-1,你自己试试

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
ListIterator的初始化指针位置,应该是指在list集合的第一个元素的位置上的。可以通过System.out.println(it.next())测试,可以发现打印出来的是第一个存储的元素。
如果要让迭代器逆向遍历打印,应当是当通过it.next()方法,将指针指向集合中的位置或者集合尾部,再逆向遍历才是可以的。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
hollywood2014 发表于 2014-10-21 23:28
楼主请听我言
迭代器的本质是指针的遍历,在你生成一个集合的迭代器的时候
如ListIterator ll=list.ListIte ...

恩,谢谢了,看完你的分析已经调试成功
回复 使用道具 举报
践行渐远 发表于 2014-10-21 23:33
ListIterator的初始化指针位置,应该是指在list集合的第一个元素的位置上的。可以通过System.out.println(i ...

恩,谢谢,多谢指点:)
回复 使用道具 举报
falonsokaka914 发表于 2014-10-21 23:40
恩,谢谢,多谢指点

不客气,互相学习。
回复 使用道具 举报
践行渐远 发表于 2014-10-21 23:44
不客气,互相学习。

恩,好的!
回复 使用道具 举报
看来楼上一些回复,自己也学习啦!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马