62,621
社区成员
发帖
与我相关
我的任务
分享public class Person {
int age;
String name;
public Person(){}
public Person(String name,int age){
this.age = age;
this.name=name;
}
@Override
public boolean equals(Object obj) {
System.out.println(this.name+":调用equals,想用什么方式比较自己写");
Person p = (Person)obj;
return this.age==p.age?true:false;
}
@Override
public int hashCode() {
System.out.println(this.name+":先调用hashCode,想用什么方式比较自己写,若想同,再调用equals");
return age;
}
public static void main(String[] args) {
HashSet<Person> persons = new HashSet<Person>();
Person p1=new Person("a",1);
Person p2=new Person("b",1);
Person p3=new Person("c",2);
persons.add(p1);
persons.add(p2);
persons.add(p3);
for(Person p:persons){
System.out.println(p.age);
}
}
}我比较相同的依据是年龄相同public class Person {
int age;
@Override
public boolean equals(Object obj) {
//按照你想要的方法去比较,比如我这里比较的是年龄,年龄相等就返回true
if(!(obj instanceof Person))
return false;
Person p = (Person)obj;
return this.age==p.age?true:false;
}
public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
p1.age=1;
p2.age=1;
System.out.println(p1.equals(p2));//如果没有重写equals方法,Object默认是比较他们的引用,所以返回的是false,你可以试试
}
}