黑马程序员技术交流社区

标题: 练习佚代器中next用法的疑问 [打印本页]

作者: yhnan    时间: 2013-3-20 20:24
标题: 练习佚代器中next用法的疑问
本帖最后由 易贺男 于 2013-3-21 09:11 编辑

在看第14天第11小节arraylist练习时,毕老师先写了
iterator it = al.iterator();
it.next().getname()+"::"+it.next().getage()
说这样会出现获取lisi01的名字,和lisi02的年龄,这我可以理解。应为next了两次
但是老师后来做了强转之后
person p = (person)it.next();
p.getname()+"::"+p.getage()
出来的结果是lisi01名字对应lisi01的年龄。02的名字对应02的年龄
我想问的是上边和下边出来把it.next的类型强转成person类和让它给p作为引用之外还有什么区别?

作者: 孙晋学    时间: 2013-3-20 21:16
it.next().getname()+"::"+it.next().getage()这种方式不对,因为只判断一次hasNext,却两次调用了next方法
不定义一个变量p,怎么两次调用方法getname(),getage()
        
作者: 谢洋    时间: 2013-3-20 22:34
it.next().getname()+"::"+it.next().getage()
分别取两个对象的name和age属性,也就是说name 和age不同一个对象
下面的正好相反

作者: 陈腾跃_2013    时间: 2013-3-20 22:49
  1. import java.util.ArrayList;
  2. import java.util.Iterator;

  3. public class CollectionTest {

  4.         public static void main(String[] args)
  5.         {
  6.                 ArrayList coll = new ArrayList();
  7.        
  8.                 coll.add("one");
  9.                 coll.add("two");
  10.                 coll.add("three");
  11.                 coll.add("four");
  12.                
  13.                 Iterator it = coll.iterator();
  14.                 while(it.hasNext())
  15.                 {
  16.                         //一下输出三次
  17.                         System.out.println(it.next().toString()
  18.                                         + it.next().toString()
  19.                                         + it.next().toString());
  20.                 }
  21.         }
  22. }
复制代码
一段有问题的代码帮助理解问题,它输出:
onetwothree
Exception in thread "main" java.util.NoSuchElementException

在没有判断hasnext的时候!
作者: 陈丽莉    时间: 2013-3-20 23:23
还有问题,请继续追问;没有的话,请将帖子分类改成【已解决】~




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