本帖最后由 陈中岩 于 2013-4-10 19:53 编辑
- package test2;
- 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))
- return false;
- //!!!!!!!!!!!!------问题在这里,this调用与p调用的name分别是哪一个name,有点蒙了
- 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;
- }
- }
- class ArrayListTest2 {
- public static void main(String[] args)
- {
- ArrayList al = new ArrayList();
- al.add(new Person("list01",30));//因为这里al.add(Object obj)所以下面要做强制类型转换
- al.add(new Person("list02",32));
- al.add(new Person("list02",32));
- al.add(new Person("list03",33));
- al.add(new Person("list04",35));
- al.add(new Person("list04",35));
-
- //去除相同元素
- al = singleElement(al);
-
- Iterator it = al.iterator();
- while(it.hasNext())
- {
- //Object obj = it.next();
- //Person p = (Person)obj;
- //以上两句可以这么写
- 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())
- {
- //创建第三方对象,将迭代器出来的元素赋值给obj
- Object obj = it.next();
- //进行判断,如果newAl容器中不包含obj对象,就将obj对象存储斤newAl容器中
- if(!newAl.contains(obj))
- newAl.add(obj);
- }
- //最后将剩下的newAl进行返回
- return newAl;
- }
-
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- }
复制代码 |