黑马程序员技术交流社区

标题: 关于集合Iterator的类型强转 [打印本页]

作者: 茂子    时间: 2014-6-3 09:09
标题: 关于集合Iterator的类型强转
给出两段代码(关于迭代器),在不运行的情况下通过分析,看他们能否通过编译,并解释为什么?
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());
                }
作者: 许庭洲    时间: 2014-6-9 21:12
值得学习ing!
作者: 田富丰    时间: 2014-6-10 00:01
  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就会指定下一个元素!!
作者: jsjchenlong    时间: 2014-6-10 09:54
嗯,支持一下。




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