黑马程序员技术交流社区
标题:
关于集合Iterator的类型强转
[打印本页]
作者:
茂子
时间:
2014-6-3 09:09
标题:
关于集合Iterator的类型强转
给出两段代码(关于迭代器),在不运行的情况下通过分析,看他们能否通过编译,并解释为什么?
1、
class HashSetDemo
{
public static void main(String[] args)
{
HashSet hs =new HashSet();
hs.add(new Person("linlin",22));
hs.add(new Person("laal",55));
hs.add(new Person("bbaf",8));
hs.add(new Person("dfsdf",66));
Iterator it=hs.iterator();
while (it.hasNext())
{
Person p=(Person)it.next();
sop(p.getName()+"::::"+p.getAge());
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
class Person
{
private String name;
private int age;
Person(String name,int age)
{
this.name=name;
this.age=age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
复制代码
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
import java.util.*;
class HashSetDemo
{
public static void main(String[] args)
{
HashSet hs =new HashSet();
hs.add(new Person("linlin",22));
hs.add(new Person("laal",55));
hs.add(new Person("bbaf",8));
hs.add(new Person("dfsdf",66));
Iterator it=hs.iterator();
while (it.hasNext())
{
sop(((Person)it.next()).getName()+"::::"+((Person)it.next()).getAge());//你少个括号
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
class Person
{
private String name;
private int age;
Person(String name,int age)
{
this.name=name;
this.age=age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
复制代码
这个是可以编译通过的,只是你拿的数据是不对的!!因为你只要next一下!那个hasNext就会指定下一个元素!!
作者:
jsjchenlong
时间:
2014-6-10 09:54
嗯,支持一下。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2