本帖最后由 追逐 于 2014-3-25 14:40 编辑
import java.util.ArrayList;
import java.util.Iterator;
/*
将自定义对象作为元素存到ArrayList集合中,并去除重复元素、
比如:存人对象。同姓名同年龄,视为同一个人,为重复元素。
思路:
1、找人描述,将数据封装进人对象。
2、定义容器,将人存入。
3、取出。
*/
- //定义人类
- class Person
- {
- private String name;
- private int age;
- Person(String name, int age)
- {
- this.name = name;
- this.age = age;
- }
- //重写equals方法。判断容器中的元素是否相同
- public boolean equals(Object obj)
- {
- if(!(obj instanceof Person)) //判断一下Person是否属于Obj类。不是的话就返回false
- return false;
- Person p = (Person)obj; //因为传入的数据在传入时类型自动提升了。所以在次数需要把类型向下强制转型
- System.out.println(p.getName());
- return this.name.equals(p.name) && this.age == p.age;
- }
-
- //设置名字
- public void setName(String name)
- {
- this.name = name;
- }
-
- //取出名字
- public String getName()
- {
- return name;
- }
-
- //设置年龄
- public void setAge(int age)
- {
- this.age = age;
- }
- //取出年龄
- public int getAge()
- {
- return age;
- }
- }
- class ArrayListTest1
- {
- public static void main(String[] args)
- {
- //创建一个容器
- ArrayList al = new ArrayList();
- al.add(new Person("张三", 31));
- al.add(new Person("张四", 32));
- al.add(new Person("张三", 31));
- al.add(new Person("张四", 32));
- al.add(new Person("张五", 33));
- al.add(new Person("张六", 34));
- //取出名字 创建迭代器
- Iterator it = al.iterator();
- for( ;it.hasNext(); ) //判断容器中是否还有元素存在。有就往下执行
- {
- Person p = (Person)it.next(); //因为it.next()返回的是一个Object类型的元素。所以需要向下转型
- System.out.println(p.getName() + ":::::" + p.getAge());
- }
- }
- }
复制代码 运行结果是:
而毕老师的视频上却可以去除重复的。求大神指教一下。我的到底错在哪里了吗?
我已经找了n遍。却始终无法找到错在何处
|