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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© trhthyj 中级黑马   /  2014-3-25 14:40  /  1016 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这个用迭代器遍历集合元素,为什么要强制转换类型,毕老师说过了但是还是不太明白,求详 解!

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

3 个回复

倒序浏览
al集合中存储的是Object对象,当将Person对象存入al集合中时已经转换成了Object对象,所以取出来时要造型,如果不想取出来时进行造型,可以在声明al集合时声明可以存入集合中的对象类型,就像这样:ArrayList<Person>al=new ArrayList<Person>();

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 赵彦丰 于 2014-3-25 15:19 编辑

我的理解 如果不对请指正 下面的代码总找三点:

第一点 存到集合中 是Object的

第二点 取出数据是通过Person 中的方法取出得 所以就必须吧Object 转 成Person

第三点 就是强制转换了

  1. /*
  2. *
  3. * 往hashSet集合中存入自定对象
  4. * 姓名和年龄相同为同一个人,重复元素
  5. * */
  6. import java.util.*;

  7. class HashSetTest
  8. {
  9.         public static void sop(Object obj)
  10.         {
  11.                 System.out.println(obj);
  12.         }
  13.         public static void main(String[] args)
  14.         {
  15.                 HashSet hs = new HashSet();//第一点
  16.                 hs.add(new Person("a1",11));
  17.                 hs.add(new Person("a2",12));
  18.                 hs.add(new Person("a3",13));
  19.                 hs.add(new Person("a2",12));
  20.                
  21.                 sop(hs.remove(new Person("a1",11)));
  22.                
  23.                 Iterator it = hs.iterator();
  24.                 while(it.hasNext())
  25.                 {
  26.                         Person p = (Person)it.next();//第三点
  27.                         sop(p.getName()+"---"+p.getAge());        
  28.                 }
  29.                
  30.                
  31.         }
  32.         
  33.                
  34. }
  35. class Person
  36. {
  37.         private String name;//第二点
  38.         private int age;
  39.         Person(String name,int age)
  40.         {
  41.                 this.name = name;
  42.                 this.age = age;
  43.         }
  44.         
  45.         public int hashCode()
  46.         {
  47.                 System.out.println(this.name+"--hashCode");
  48.                 return name.hashCode()+age;
  49.         }
  50.         
  51.         public boolean equals(Object obj)
  52.         {
  53.                 if(!(obj instanceof Person))
  54.                         return false;
  55.                 Person p = (Person)obj;
  56.                 System.out.println(this.name+"----"+p.name);
  57.                
  58.                 return this.name.equals(p.name) && this.age == p.age;
  59.         }
  60.         
  61.         public String getName()
  62.         {
  63.                 return name;
  64.         }
  65.         
  66.         public int getAge()
  67.         {
  68.                 return age;
  69.         }
  70. }

复制代码

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
你注释不是写的很清楚么  有个类型下降的过程 。以后学泛型就不用这样了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马