本帖最后由 nerveva2000 于 2014-10-15 20:11 编辑
下面着个问题,我转不过来那个弯,在Person类中定义equals,没看到调用就进行了重复项排除了。
- <font size="2">/*
- 将自定义对象作为元素存到ArrayList集合中,并去除重复元素
- 比如:存人对象,同姓名,同年龄,视为同一个人,为重复元素。
- 思路
- 1对人描述,将数据封装进人对象
- 2定义容器,将人存入
- 3取出
- */
- import java.util.*;
- class Person
- {
- private String name;
- private int age;
- Person(String name,int age)
- {
- this.name= name;
- this.age= age;
- }
- public boolean equals(Object obj)
- {
- if(!(obj instanceof Person))
- return false;
- Person p= (Person)obj;
- return this.name.equals(p.name)&& this.age == p.age;
- }
- public String getName()
- {
- return name;
- }
- public int getAge()
- {
- return age;
- }
- }
- class Test
- {
- public static void main(String[] args)
- {
- ArrayList al = new ArrayList();
- al.add(new Person("lisi01",30));
- al.add(new Person("lisi02",35));
- al.add(new Person("lisi03",32));
- al.add(new Person("lisi02",35));
- al.add(new Person("lisi03",32));
- al.add(new Person("lisi04",31));
- al=singleElement(al);
- Iterator it = al.iterator();
- while (it.hasNext())
- {
- Person p = (Person)it.next();
- sop(p.getName()+"---"+p.getAge());
- }
- }
- public static ArrayList singleElement(ArrayList al)
- {
- //定义一个临时容器
- ArrayList newAl = new ArrayList();
- Iterator it =al.iterator();
-
- while (it.hasNext())
- {
- Object obj = it.next();
- if (!newAl.contains(obj))
- newAl.add(obj);
- }
- return newAl;
- }
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- }</font>
复制代码
|