本帖最后由 江大海 于 2013-5-18 10:46 编辑
为什么在迭代的时候不可以直接Person p = it.next()呢?it。next取出来的不就是person对象吗?
为什么还要各种转型
代码展示如下
------------------来自黑马云青年 大大大海- /*
- 需求:将自定义的对象作为元素存到ArrayList集合中,并去除重复元素
- 比如:存人对象,同姓名同年龄视为同一人,为重复元素
- 思路:自定义Person类,创建对象存到ArrayList中,
- 判断姓名年龄是否相同,相同则不存入
- 取出集合
- */
- import java.util.*;
- 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;
- }
- }
- class ArrayListTest
- {
- public static void main(String[] args)
- {
- ArrayList al = new ArrayList();
- al.add(new Person("张2",21));
- al.add(new Person("张1",21));
- al.add(new Person("张2",21));
- al.add(new Person("张3",21));
- al.add(new Person("张1",21));
- al.add(new Person("张3",21));
-
- for (Iterator it = al.iterator();it.hasNext() ; )
- {
- Object obj = it.next();//----------------------------问题在这里
- Person p = (Person)obj;//it.next()取出的不就是Peason对象吗?为什么不可直接Person p = it.next();这样获取,还要各种转型呢??求解释
- /*Person p = it.next();*/
- sop(p.getName()+"--------"+p.getAge());
- }
- }
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- public static ArrayList singleArr(ArrayList al)
- {
- ArrayList newAl = new ArrayList();
-
- for (Iterator it = al.iterator();it.hasNext() ; )
- {
- //迭代器中一个hasNext只能对应一个next,不然就打印了两个
- Object obj = it.next();
- if (!newAl.contains(obj))
- newAl.add(obj);
- }
- return newAl;
- }
- }
复制代码 |