何时有必要重写equals()和hashCode()
最近,在网上浏览了关于equals(),hashCode()的文章,强调当一个对象被当作键值(或索引)来使用的时候要重写这两个方法,但我试了一下列子:
import java.util.HashMap;
public class Person {
private String id;
public String getId(){
return id;}
public void setId(String id){
this.id=id;
}
public static void main(String args[]){
Person p=new Person();
Person pp=new Person();
HashMap map=new HashMap();
map.put(p,"p1");
map.put(pp,"p2");
System.out.print(map.get(p));
}
}
即使没有重写也能得到正确的值p2,为什么