黑马程序员技术交流社区
标题:
hasPrevious的问题?
[打印本页]
作者:
刘辉
时间:
2013-3-18 20:55
标题:
hasPrevious的问题?
本帖最后由 樱木花道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不是按倒序打印的吗,,为什么这个打印不出来东西呢?
作者:
罗威
时间:
2013-3-18 21:28
哥们,正向打印出来的数据是 Lucy Lily LinTao
那么说明一个什么问题呢?你可以想象成内存里有一个指针 首先指向的是Lucy,你向就判断下面是否有值,你逆向的化就判断上面是否有值,很明显Lucy的上面没有其他的对象;
也就是说一开始运行的时候 指针 默认指向的是 Lucy lucy前面并没有数据,所以输出是空白!
你记住这么一句话:你若需要使用previous这个方法逆向遍历,前提是必须先正向遍历到结尾了。然后才能逆序遍历。
作者:
罗威
时间:
2013-3-18 21:28
哥们,正向打印出来的数据是 Lucy Lily LinTao
那么说明一个什么问题呢?你可以想象成内存里有一个指针 首先指向的是Lucy,你向就判断下面是否有值,你逆向的化就判断上面是否有值,很明显Lucy的上面没有其他的对象;
也就是说一开始运行的时候 指针 默认指向的是 Lucy lucy前面并没有数据,所以输出是空白!
你记住这么一句话:你若需要使用previous这个方法逆向遍历,前提是必须先正向遍历到结尾了。然后才能逆序遍历。
作者:
孙晋学
时间:
2013-3-18 21:31
本帖最后由 孙晋学 于 2013-3-18 21:32 编辑
第一个错误:hasPrevious方法是ListIterator的方法,你上面直接那么写,编译都报错
第二:列表的指针一开始指向列表的头部,hasPrevious判断它前面还有没有元素,当然为假
import java.util.*;
class ArrayListDemo
{
public static void main(String[] args)
{
ArrayList<String> list=new ArrayList<String>();
list.add("Lucy");
list.add("Lily");
list.add("LinTao");
ListIterator<String> li = list.listIterator();//调用list特有迭代器
while(li.hasNext())
{
String s=li.next();
System.out.println(s);
} //此时指针已经移动到列表尾部
while(li.hasPrevious())
{
String s=li.previous();
System.out.println(s);
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2