62,620
社区成员
发帖
与我相关
我的任务
分享package test;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person() {
super();
}
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;
}
@Override
public boolean equals(Object o) {
if(o==null) return false;
if(o==this) return true;
if(o instanceof Person ){
Person p=(Person)o;
if(p.name.equals(this.name)&&p.age==this.age){
return true;
}else{
return false;
}
}else{
return false;
}
}
@Override
public int hashCode() {
return this.name.hashCode()+age;
}
}
package test;
import java.util.HashSet;
import java.util.Set;
public class TestHashSet {
public static void main(String[] args) {
Person p=new Person("llw",23);
Set<Person> persons=new HashSet<Person>();
persons.add(p);
System.out.println("persons.contains(p)--> "+persons.contains(p));
System.out.println("p.hashCode()--> "+p.hashCode());
Person getPerson=null;
Person check=null;
for(Person person:persons){
getPerson=person;
System.out.println("getPerson--> "+getPerson);
check=person;
}
getPerson.setAge(22);
System.out.println("getPerson--> "+getPerson);
System.out.println("after setAge()--> "+getPerson.hashCode());
System.out.println("after setAge() contain --> "+persons.contains(getPerson));
System.out.println("check.hashCode()--> "+check.hashCode());
System.out.println("is check in persons --> "+persons.contains(check));
}
persons.contains(p)--> true
p.hashCode()--> 107278
getPerson--> test.Person@1a30e
getPerson--> test.Person@1a30d
after setAge()--> 107277
after setAge() contain --> false
check.hashCode()--> 107277
is check in persons --> false
public String toString() {
return getClass().getName() + "@" + Integer.toHexString hashCode());
}