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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 茂子 中级黑马   /  2014-6-3 09:09  /  1157 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

给出两段代码(关于迭代器),在不运行的情况下通过分析,看他们能否通过编译,并解释为什么?
1、
  1. class HashSetDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 HashSet hs =new HashSet();
  6.                 hs.add(new Person("linlin",22));
  7.                 hs.add(new Person("laal",55));
  8.                 hs.add(new Person("bbaf",8));
  9.                 hs.add(new Person("dfsdf",66));

  10.                 Iterator it=hs.iterator();
  11.                 while (it.hasNext())
  12.                 {
  13.                         Person p=(Person)it.next();
  14.                         sop(p.getName()+"::::"+p.getAge());
  15.                 }
  16.                
  17.         }

  18.         public static void sop(Object obj)
  19.         {
  20.                 System.out.println(obj);
  21.         }
  22. }

  23. class Person
  24. {
  25.         private String name;
  26.         private int age;
  27.         Person(String name,int age)
  28.         {
  29.                 this.name=name;
  30.                 this.age=age;
  31.         }

  32.         public String getName()
  33.         {
  34.                 return name;
  35.         }

  36.         public int getAge()
  37.         {
  38.                 return age;
  39.         }
  40. }
复制代码


2、与1大体一致,只修改迭代器那块;
Iterator it=hs.iterator();
                while (it.hasNext())
                {
                        //Person p=(Person)it.next();
                        sop((Person)it.next().getName()+"::::"+(Person)it.next().getAge());
                }

3 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
  1. import java.util.*;
  2. class HashSetDemo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 HashSet hs =new HashSet();
  7.                 hs.add(new Person("linlin",22));
  8.                 hs.add(new Person("laal",55));
  9.                 hs.add(new Person("bbaf",8));
  10.                 hs.add(new Person("dfsdf",66));

  11.                 Iterator it=hs.iterator();
  12.                 while (it.hasNext())
  13.                 {
  14.                         sop(((Person)it.next()).getName()+"::::"+((Person)it.next()).getAge());//你少个括号
  15.                 }
  16.                
  17.         }

  18.         public static void sop(Object obj)
  19.         {
  20.                 System.out.println(obj);
  21.         }
  22. }

  23. class Person
  24. {
  25.         private String name;
  26.         private int age;
  27.         Person(String name,int age)
  28.         {
  29.                 this.name=name;
  30.                 this.age=age;
  31.         }

  32.         public String getName()
  33.         {
  34.                 return name;
  35.         }

  36.         public int getAge()
  37.         {
  38.                 return age;
  39.         }
  40. }
复制代码

这个是可以编译通过的,只是你拿的数据是不对的!!因为你只要next一下!那个hasNext就会指定下一个元素!!
回复 使用道具 举报
嗯,支持一下。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马