day14/ArrayListTest2.java

来源:互联网 发布:mac 查杀进程 编辑:程序博客网 时间:2024/05/23 01:18
/*将自定义对象作为元素存到ArrayList集合中,并去除重复元素。比如:存人对象。同姓名并且同年龄,视为同一个人,为重复元素。思路:1.对人描述,将数据封装进人对象。2.定义容器,将人存入。3.取出。List集合判断元素是否相同,依据的都是元素的equals方法.比如contains() remove()方法。一般都要去复写Object类中的equals方法。*/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)//重写Object类中的equals方法{if(!(obj instanceof Person))return false;Person p =(Person)obj;System.out.println(this.name+"...equals..."+p.name);return this.name.equals(p.name) && this.age==p.age;//这里面的equals方法是字符串中的equals方法}//----------------------------------public String getName(){return name;}public int getAge(){return age;}}class RemoveSame{//去除相同元素public static ArrayList singleElement(ArrayList al){ArrayList tempAl = new ArrayList();Iterator it = al.iterator();while(it.hasNext()){Object obj = it.next();if(!tempAl.contains(obj))//public boolean contains(Object o)//contains调用了equals方法//(o==null ? e==null : o.equals(e)) {tempAl.add(obj);}}return tempAl;}}class ArrayListTest2 {public static void sop(Object obj){System.out.println(obj);}public static void main(String[] args) {ArrayList al = new ArrayList();al.add(new Person("lisi01",31));//al.add(Object obj)//Object obj = new Person("lisi01",31);//多态,Person类向上转型了,但是Object类中没有Person类中的特有方法,如getName() getAge()al.add(new Person("lisi02",32));al.add(new Person("lisi03",33));al.add(new Person("lisi02",32));//al.add(new Person("lisi02",32));//al.add(new Person("lisi03",33));//al.add(new Person("lisi05",35));//去除重复元素al=RemoveSame.singleElement(al);//打印去除重复元素后,容器中的现有的元素Iterator it = al.iterator();while(it.hasNext()){Object obj = it.next();Person p = (Person)obj;sop(p.getName()+"..."+p.getAge());}}}/*E:\javademo\day14>java ArrayListTest2lisi02...equals...lisi01lisi03...equals...lisi01lisi03...equals...lisi02lisi02...equals...lisi01lisi02...equals...lisi02lisi01...31lisi02...32lisi03...33*/

0 0