public class Person {
private String name;
private int age;
public Person( String nameVal, int ageVal)
{
setName(nameVal);
setAge(ageVal);
}
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>0?age:0;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Person))
return false;
Person p = (Person) obj;
System.out.println("调用equals:"+ this.getName()+"..."+ p.getName());
return name.equals(p.getName()) && age == p.getAge();
}
}
import java.util.*;
public class Test {
/**
* @param args
*/
ArrayList<Person> temp = new ArrayList<Person>();
public Test(){
ArrayList<Person> person = new ArrayList<Person>();
person.add( new Person("zhangsan1", 25));
person.add( new Person("zhangsan2", 26));
person.add( new Person("zhangsan3", 27));
person.add( new Person("zhangsan1", 25));
Iterator<Person> it = person.iterator();
while (it.hasNext())
{
Person p = it.next();
if ( !temp.contains(p))
temp.add(p);
}
Iterator<Person> iter = temp.iterator();
while (iter.hasNext())
{
Person p = iter.next();
System.out.println(p.getName() +": " + p.getAge() );
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Test();
}
}
//OutPut
调用equals:zhangsan2...zhangsan1
调用equals:zhangsan3...zhangsan1
调用equals:zhangsan3...zhangsan2
调用equals:zhangsan1...zhangsan1
zhangsan1: 25
zhangsan2: 26
zhangsan3: 27
ArrayList 的 contains()隐式调用了 对象的equals()
最新推荐文章于 2022-05-15 22:24:59 发布