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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘辉 中级黑马   /  2013-3-18 20:55  /  2495 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 樱木花道10 于 2013-3-19 23:03 编辑

import java.util.ArrayList;
import java.util.Iterator;
class ArrayListDemo
{
        public static void main(String[] args)
        {
                ArrayList list=new ArrayList();
                list.add("Lucy");
                list.add("Lily");
                list.add("LinTao");
                Iterator it=list.iterator();
                while(it.hasPrevious())
                {
                        String s=(String)it.previous();
                        System.out.println(s);
                }
                  }
}
previous不是按倒序打印的吗,,为什么这个打印不出来东西呢?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

3 个回复

倒序浏览
哥们,正向打印出来的数据是   Lucy   Lily    LinTao
那么说明一个什么问题呢?你可以想象成内存里有一个指针 首先指向的是Lucy,你向就判断下面是否有值,你逆向的化就判断上面是否有值,很明显Lucy的上面没有其他的对象;

也就是说一开始运行的时候 指针 默认指向的是 Lucy   lucy前面并没有数据,所以输出是空白!

你记住这么一句话:你若需要使用previous这个方法逆向遍历,前提是必须先正向遍历到结尾了。然后才能逆序遍历。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
哥们,正向打印出来的数据是   Lucy   Lily    LinTao
那么说明一个什么问题呢?你可以想象成内存里有一个指针 首先指向的是Lucy,你向就判断下面是否有值,你逆向的化就判断上面是否有值,很明显Lucy的上面没有其他的对象;

也就是说一开始运行的时候 指针 默认指向的是 Lucy   lucy前面并没有数据,所以输出是空白!

你记住这么一句话:你若需要使用previous这个方法逆向遍历,前提是必须先正向遍历到结尾了。然后才能逆序遍历。
回复 使用道具 举报
本帖最后由 孙晋学 于 2013-3-18 21:32 编辑

第一个错误:hasPrevious方法是ListIterator的方法,你上面直接那么写,编译都报错
第二:列表的指针一开始指向列表的头部,hasPrevious判断它前面还有没有元素,当然为假
  1. import java.util.*;
  2. class ArrayListDemo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 ArrayList<String> list=new ArrayList<String>();
  7.                 list.add("Lucy");
  8.                 list.add("Lily");
  9.                 list.add("LinTao");
  10.                 ListIterator<String> li = list.listIterator();//调用list特有迭代器
  11.                 while(li.hasNext())
  12.                 {
  13.                         String s=li.next();
  14.                         System.out.println(s);
  15.                 }    //此时指针已经移动到列表尾部
  16.                  while(li.hasPrevious())
  17.                 {
  18.                         String s=li.previous();
  19.                         System.out.println(s);
  20.                 }
  21.         }
  22. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马