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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yhnan 中级黑马   /  2013-3-20 20:24  /  1589 人查看  /  4 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 易贺男 于 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作为引用之外还有什么区别?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

4 个回复

倒序浏览
it.next().getname()+"::"+it.next().getage()这种方式不对,因为只判断一次hasNext,却两次调用了next方法
不定义一个变量p,怎么两次调用方法getname(),getage()
        

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 恭喜25分

查看全部评分

回复 使用道具 举报
it.next().getname()+"::"+it.next().getage()
分别取两个对象的name和age属性,也就是说name 和age不同一个对象
下面的正好相反

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
  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的时候!

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
还有问题,请继续追问;没有的话,请将帖子分类改成【已解决】~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马