黑马程序员技术交流社区
标题:
求助,用迭代器遍历时类型转换问题
[打印本页]
作者:
trhthyj
时间:
2014-3-25 14:40
标题:
求助,用迭代器遍历时类型转换问题
这个用迭代器遍历集合元素,为什么要强制转换类型,毕老师说过了但是还是不太明白,求详
QQ截图20140325143304.png
(185.87 KB, 下载次数: 22)
下载附件
2014-3-25 14:40 上传
解!
作者:
yanzhendong
时间:
2014-3-25 15:01
al集合中存储的是Object对象,当将Person对象存入al集合中时已经转换成了Object对象,所以取出来时要造型,如果不想取出来时进行造型,可以在声明al集合时声明可以存入集合中的对象类型,就像这样:ArrayList<Person>al=new ArrayList<Person>();
作者:
赵彦丰
时间:
2014-3-25 15:18
本帖最后由 赵彦丰 于 2014-3-25 15:19 编辑
我的理解 如果不对请指正 下面的代码总找三点:
第一点 存到集合中 是Object的
第二点 取出数据是通过Person 中的方法取出得 所以就必须吧Object 转 成Person
第三点 就是强制转换了
/*
*
* 往hashSet集合中存入自定对象
* 姓名和年龄相同为同一个人,重复元素
* */
import java.util.*;
class HashSetTest
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
HashSet hs = new HashSet();//第一点
hs.add(new Person("a1",11));
hs.add(new Person("a2",12));
hs.add(new Person("a3",13));
hs.add(new Person("a2",12));
sop(hs.remove(new Person("a1",11)));
Iterator it = hs.iterator();
while(it.hasNext())
{
Person p = (Person)it.next();//第三点
sop(p.getName()+"---"+p.getAge());
}
}
}
class Person
{
private String name;//第二点
private int age;
Person(String name,int age)
{
this.name = name;
this.age = age;
}
public int hashCode()
{
System.out.println(this.name+"--hashCode");
return name.hashCode()+age;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Person))
return false;
Person p = (Person)obj;
System.out.println(this.name+"----"+p.name);
return this.name.equals(p.name) && this.age == p.age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
复制代码
作者:
月影释
时间:
2014-3-25 15:54
你注释不是写的很清楚么 有个类型下降的过程 。以后学泛型就不用这样了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2