------- android培训、java培训、期待与您交流! ----------
package com.itheima;
import java.util.ArrayList;
import java.util.Iterator;
public class Demo2 {
/**
* 练习:定义功能去除ArrayList中的重复元素。
*
* 思路:1、定义一个临时ArrayList容器
* 2、迭代原集合中的元素
* 3、判断元素是否在新集合中存在,若不存在则会添加到新集合中去
*
* 注:ArrayList中的contains、removes方法是根据对象的equals方法判断是否相同
* HashSet是根据hashCode及equals方法 故需要要对象中覆写两个方法
* 删除元素及判断包含元素是否存在最终是该元素是否有和容器的元素相同。
* @param args
*/
public static void main(String[] args) {
ArrayList al = new ArrayList();
al.add(new Person2("fdafa",23));
al.add(new Person2("dsadad",31));
al.add(new Person2("asdwqe",28));
al.add(new Person2("rdsa",43));
al.add(new Person2("dsadad",31));
al.add(new Person2("rdsa",43));
al.add(new Person2("rdsa",45));
System.out.println(al);
al = selectElement(al);
System.out.println(al);
}
private static ArrayList selectElement(ArrayList al) {
ArrayList temp = new ArrayList(); //创建临时集合容器
Iterator it = al.iterator();
while(it.hasNext()){
Person2 p = (Person2)it.next();
if(!temp.contains(p)){ //迭代过程判断集合中是否包含元素,不包含则存储到新集合中去
temp.add(p);
}
}
return temp; //返回一个新的集合
}
}
class Person2{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person2(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) { //ArrayList集合只需要覆写equals方法就可以
if(this==obj){
return true;
}
if(!(obj instanceof Person2)){
throw new ClassCastException("对象类型错误");
}
Person2 p = (Person2)obj;
return this.name.equals(p.name) && this.age == p.age;
}
public String toString(){
return name+"::"+age;
}
}