重写HashCode
重写HashCode的内存变化过程 两种重写方式的比较
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
(1). 主要代码
class Person{
private String name;
private int age;
public static void sop(Object o){
System.out.println(o);
}
public Person(String name, int age){
this.name =name;
this.age =age;
}
public void setName(String name){
this.name =name;
}
public String getName(){
return this.name;
}
public void setAge(int age){
this.age =age;
}
public int getAge(){
return this.age;
}
public String toString(){
return this.name+"::"+this.age;
}
//equals已经重写
public boolean equals(Object obj){
if(!(obj instanceof Person)){
return false;
}
Person p =(Person)obj;
//用来查看equals方法是否被调用
sop(this.name +".......equals......."+ p.name);
//认为名字相同并且年龄一样大的两个对象是一个
return this.name.equals(p.name) && this.age == p.age;
}
}
(2). 将hashCode()重写成相同的值-----解决HashSet中重复添加
[1]. 问题:内容相同但是地址不同的自定义对象如何避免重复的内容添加到HashSet中?
【解决办法】必须重写hashCode和equal