?????????????HashCode??????????壺
????hashcode???????????????????????÷??????????????Щ??????磬java.util.Hashtable ?????????
????hashCode ?????Э?????
??????Java??ó????????????????????ε??? hashCode ?????????????μ?????????????????????????equals???????????????б???????????ó?????????е?????ó???????????У??????????豣??????
??????????? equals(Object) ???????????????????????????????????е????????????? hashCode ????????????????????????????
????????????? ?????????????? equals(java.lang.Object) ????????????????????????????????е?????????????hashCode????????????????????????????????????????????????????????????????????????????????????
???????????? Object ????? hashCode ??????????????????????????????????????????????????????????????????????????????? JavaTM ????????????????????ɡ???
??????equals????????д???????б????д hashCode ??????????? hashCode ?????????Э??????Э??????????????????????????
??????????ι?????????壬???????????????????????
????1??hashCode?????????????????????????Hashtable??HashMap???hashCode??????????д洢????????????洢??????
????2??????????????????????????equals(java.lang.Object) ????????????????????hashCode?????????
????3??????????equals????????д??????????hashCode???????д?????????hashCode?????????????equals????????????£??????Υ???????????2??
????4???????????hashCode?????????????????????????????????????????equals(java.lang.Object) ???????????????????????????д洢???У???Hashtable??????“???????????????”??
??????????????hashCode????????????????equals???????????????????????????????λ????????????????????????
????1.hashcode??????????????????????????????????????????????????
?????????????????????λ??
????0  1  2  3  4  5  6  7
?????????и?????????и???ν?ID????????????????????8??λ?????????????hashcode????????????????????????????λ????????????????????????????
???????????hashcode????Ч???????
????????????????и???ν?ID?????????????????hashcode?ID??8????????????????????????????λ?á??????????ID?9??9??8???????1????????????????1???λ??????ID??13????????????5????????????????5???λ?á??????????????????????????ID?? 8????????????????λ?????
????2.????????????????????hashcode???????????????????????ID????????????9????8??17????8??????????1????????????????????????????????????????ж??????????????????? equals???
??????????????????? hashcode???ж??????????????????????????????к??????????????????? equals ??????????????????????
???????????д??equals()??????????дhashCode()???
????????????????????????????????????????????????????дhashcode()????????????дequals()?????e?
????????????????????????????
public class HashTest {
private int i;
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
public int hashCode() {
return i % 10;
}
public final static void main(String[] args) {
HashTest a = new HashTest();
HashTest b = new HashTest();
a.setI(1);
b.setI(1);
Set<HashTest> set = new HashSet<HashTest>();
set.add(a);
set.add(b);
System.out.println(a.hashCode() == b.hashCode());
System.out.println(a.equals(b));
System.out.println(set);
}
}
????????????????
????true
????false
????[com.ubs.sae.test.HashTest@1?? com.ubs.sae.test.HashTest@1]
?????????????????????????д??hashCode????????????????????????????????????hashCode????????????????????????????????????????дequals??????????????object????equals????????????????????????????????????????????????????????????????????????????????????????????????HashSet?У???HashSet????????????????????????????equals????????????????????????????????????????????a??b?????????HashSet?У?????HashSet??????????????????