package ArrayList;
import java.sql.Array;
import java.util.ArrayList;
import java.util.Iterator;
import com.sun.org.apache.bcel.internal.generic.NEW;
import p.bean.Person;
public class ArrayListTest2 {
public static void main(String[] args) {
//singleDemo();
ArrayList a1=new ArrayList();
a1.add(new Person("lisi1",21));
a1.add(new Person("lisi2",22));
a1.add(new Person("lisi3",23));
a1.add(new Person("lisi4",24));
a1.add(new Person("lisi4",24));
a1.add(new Person("lisi4",24));
System.out.println(a1);
a1=getSingleElements(a1);
System.out.println(a1.remove(new Person("lisi2",22)));//true
//虽然是new的 但 HashSet 先判断 有没有这个元素 根据 hashCode 和 equals 都符合 就删除了
// ArrayList 是根据 euqals 判断
//一定要复写 自定义类中的这两个方法
System.out.println(a1);
}
public static void singleDemo() {
ArrayList a1=new ArrayList();
a1.add("abc1");
a1.add("abc2");
a1.add("abc2");
a1.add("abc4");
a1.add("abc4");
System.out.println(a1);
a1=getSingleElements(a1);
System.out.println(a1);
}
private static ArrayList getSingleElements(ArrayList a1) {
//1 定义一个临时容器
ArrayList temp=new ArrayList();
//2 迭代a1集合
Iterator it=a1.iterator();
while(it.hasNext()) {
Object obj=it.next();
//3 判断被迭代到的元素是否在临时容器中存在
if(!temp.contains(obj)) {
temp.add(obj);
}
}
return temp;
}
}
package p.bean;
public class Person {
private String name;
private int age;
public Person() {
super();
// TODO Auto-generated constructor stub
}
/* @Override
public int hashCode() {
// TODO Auto-generated method stub
//System.out.println(this+"...hashCode");
return name.hashCode()+age;
}*/
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
if(this==obj)//地址一致 直接返回true
return true;
if(!(obj instanceof Person)){//如果 类型 不一致 根本不用比
throw new ClassCastException("类型错误");
}
//System.out.println(this+"..euqals."+obj);
Person p =(Person)obj;
return this.name.equals(p.name)&&this.age==p.age;
}
public String toString() {
return name+"..."+age;
}
public Person(String name, int age) {
super();
this.name = name;
this.age = 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 static void main(String[] args) {
// TODO Auto-generated method stub
}
}