黑马程序员技术交流社区

标题: 黑马程序员 关于迭代器的一个问题! [打印本页]

作者: 北极雪871208    时间: 2014-3-23 09:46
标题: 黑马程序员 关于迭代器的一个问题!
---------------------- <a target="blank">ASP.Net+Unity开发</a>、<a target="blank">.Net培训</a>、期待与您交流! ----------------------
public static void main(String[]  args)
  Arraylist  al=new Arraylist();
        al.add("01");
        al.add("02");
        al.add("03");
Interator   it=al.interator();
   while( it.HasNext())
{
     System.out.println(it.next())和System.out.println(it.next()+"...."+it.next())---后面这句代码不可用的原因
}
主要是突出这个问题,代码可能写的不全,请谅解!

---------------------- <a target="blank">ASP.Net+Unity开发</a>、<a target="blank">.Net培训</a>、期待与您交流! ----------------------

作者: luoanjade    时间: 2014-3-23 15:22
本帖最后由 luoanjade 于 2014-3-23 15:30 编辑

while( it.HasNext())
{
     System.out.println(it.next())和System.out.println(it.next()+"...."+it.next())
}
这个,你看一下api,hasNext()方法和next()方法的作用就知道了。
hasNext()是判断是否有数据存在。next()是取一条数据,如果数据不存在则会异常。
你后面的写法是,连续取了两条数据,而你上面插入的数据就只有3条,取第四次的时候,就取不到数据了,当然就会异常了。
如果你确定列表里面的数据是偶数条的话,个人认为可以这么写:
System.out.println(it.next()+"...."+it.next()),减少hasNext()判断次数。
还有,如果你确定列表里面有3的倍数条数据,还可以这样写:
System.out.println(it.next()+"...."+it.next()+"...."+it.next())
依次类推,四的倍数条:
System.out.println(it.next()+"...."+it.next()+"...."+it.next()+"...."+it.next())
......
你看看这上面的的几种方式,现实中哪个实用呀?一个都不实用,对不?因为我们根本就不知道数据有多少。
所以,为何要给自己找麻烦呢,直接System.out.println(it.next()),本分一点一条条的取,你有多少数据我都不怕。


作者: 北极雪871208    时间: 2014-3-23 21:13
luoanjade 发表于 2014-3-23 15:22
while( it.HasNext())
{
     System.out.println(it.next())和System.out.println(it.next()+"...."+it.ne ...

恩恩,我零基础,可能理解的不好,多帮忙啊!:)
作者: luoanjade    时间: 2014-3-23 22:51
北极雪871208 发表于 2014-3-23 21:13
恩恩,我零基础,可能理解的不好,多帮忙啊!

我也是刚学的,互相学习!
作者: 遗忘的青春年华    时间: 2014-3-26 10:36
next()方法里面默认会有一个指针,在Java当中指针讲的特别模糊,但还是会用到,底层C++里面的指针一样,这里的next()方法里面有一个指针,输出一个元素后,指针会自动向后面移动的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2