本帖最后由 刘茂林 于 2013-5-13 23:09 编辑
- import java.util.ArrayList;
- /*
- *需求:将自定义对象作为元素存入ArrayList()数组中,并去除相同元素
- *建立人类 属性有姓名 年龄 同姓名同年龄 视为重复元素
- *
- *思路:1 对人描述 将数据封入对象
- * 2 定义容器 将人进行存储
- * 3 取出
- **/
- import java.util.Iterator;
- 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))//instanceof 判断其左边对象是否为其右边类的实例
- {
- 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;
- }
- }
- public class ArrayList4
- {
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- public static void main(String[] args)
- {
- ArrayList a1 = new ArrayList();
- a1.add(new Person("lisi01", 23));
- a1.add(new Person("lisi02", 23));
- a1.add(new Person("lisi03", 25));
- a1.add(new Person("lisi04", 25));
- a1.add(new Person("lisi04", 25));
-
- a1 = bijiao(a1);
- Iterator it = a1.iterator();
- while (it.hasNext())
- {
- // Object obj = it.next();//返回一个Object类型,因为Iterator不知道容器中是什么类型
- // Person p = (Person)obj;//向下转型 将obj转成 person类型
- Person p = (Person) it.next();// 一般写成这个简单形式
- sop(p.getName() + "......" + p.getAge());
- }
- }
-
- public static ArrayList bijiao(ArrayList a1)
- {
-
- //建立一个临时容器
- ArrayList new1 = new ArrayList();
- Iterator it = a1.iterator();//用于对a1进行遍历的 建立对象引用
- while(it.hasNext())
- {
- Object obj = it.next();
- if(!new1.contains(obj))//如果这个临时容器NEW1中不包含obj里面的元素
- {
- new1.add(obj);//那么添加进入new1
- }
- }
-
- return new1;
-
- }
- }
复制代码 Person p = (Person)obj;//强制转换
return this.name.equals(p.name) && this.age == p.age;
第一句倒是明白 是将obj 强转成Person类型 第二句有些不太明白 求解答
|