先说结论:做为key的对象,其hashCode相等且equals为true。(同一个对象肯定是相同,这个就不用多说了)
if (p.hash == hash && ((k = p.key) == key || (key != null && key.equals(k))))
Object类
hashCode是一个本地方法根据对象内存地址生成的一个数
equals,是地址相同的对象,即同一个对象。==必然相等
而其他类一般都重写了2者
hashCode,主要用于集合的某些操作,自己重写该方法,用于hashmap中计算数组的位置等。equals相等,则hashCode必然相等。
equals,主要是用于判断对象的字面量相同。注意是【值】相同就true。
第一种情况
定义QsmDemo 类,不重写hashCode和equals
class QsmDemo {
private String name;
private String identityNum;
public QsmDemo(String name) {
this.name = name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getIdentityNum() {
return identityNum;
}
public void setIdentityNum(String identityNum) {
this.identityNum = identityNum;
}