???????????????????
????1???ж??????????hashcode???????????????????????????????????????????equals??
????2?????????????equals???????????????????????????????????????
?????????
public class Person {
private int age;
private int sex;    //0???У?1???
private String name;
private final int PRIME = 37;
Person(int age ??int sex ??String name){
this.age = age;
this.sex = sex;
this.name = name;
}
/** ???getter??setter???? **/
@Override
public int hashCode() {
System.out.println("????hashCode????...........");
int hashResult = 1;
hashResult = (hashResult + Integer.valueOf(age).hashCode() + Integer.valueOf(sex).hashCode()) * PRIME;
hashResult = PRIME * hashResult + ((name == null) ? 0 : name.hashCode());
System.out.println("name:"+name +" hashCode:" + hashResult);
return hashResult;
}
/**
* ??дhashCode()
*/
public boolean equals(Object obj) {
System.out.println("????equals????...........");
if(obj == null){
return false;
}
if(obj.getClass() != this.getClass()){
return false;
}
if(this == obj){
return true;
}
Person person = (Person) obj;
if(getAge() != person.getAge() || getSex()!= person.getSex()){
return false;
}
if(getName() != null){
if(!getName().equals(person.getName())){
return false;
}
}
else if(person != null){
return false;
}
return true;
}
}
??????Bean?????????Java Bean???????????hashCode??????equals??????
public class Main extends JPanel {
public static void main(String[] args) {
Set<Person> set = new HashSet<Person>();
Person p1 = new Person(11?? 1?? "????");
Person p2 = new Person(12?? 1?? "????");
Person p3 = new Person(11?? 1?? "????");
Person p4 = new Person(11?? 1?? "????");
//????p1??p3
System.out.println("p1 == p3? :" + (p1 == p3));
System.out.println("p1.equals(p3)?:"+p1.equals(p3));
System.out.println("-----------------------?????--------------------------");
set.add(p1);
set.add(p2);
set.add(p3);
set.add(p4);        System.out.println("set.size()="+set.size());
}
}
???????н?????£?

????????????????????????????hashCode?????????equals????????set????????3??add???????????????????????????????????????