java hashcode是什么,讓我們一起了解一下?
hashCode就是對(duì)象的散列碼,是根據(jù)對(duì)象的某些信息推導(dǎo)出的一個(gè)整數(shù)值,默認(rèn)情況下表示是對(duì)象的存儲(chǔ)地址。通過(guò)散列碼,可以提高檢索的效率,主要用于在散列存儲(chǔ)結(jié)構(gòu)中快速確定對(duì)象的存儲(chǔ)地址,如Hashtable、hashMap中。
hashcode的作用是什么?
1、hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用來(lái)在散列存儲(chǔ)結(jié)構(gòu)中確定對(duì)象的存儲(chǔ)地址的;
2、如果兩個(gè)對(duì)象相同,就是適用于equals(java.lang.Object) 方法,那么這兩個(gè)對(duì)象的hashCode一定要相同;
3、如果對(duì)象的equals方法被重寫,那么對(duì)象的hashCode也盡量重寫,并且產(chǎn)生hashCode使用的對(duì)象,一定要和equals方法中使用的一致,否則就會(huì)違反上面提到的第2點(diǎn);
4、兩個(gè)對(duì)象的hashCode相同,并不一定表示兩個(gè)對(duì)象就相同,也就是不一定適用于equals(java.lang.Object) 方法,只能夠說(shuō)明這兩個(gè)對(duì)象在散列存儲(chǔ)結(jié)構(gòu)中,如Hashtable,他們“存放在同一個(gè)籃子里”。
具體的示例如下:
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?set?=?new?HashSet(); set.add(a); set.add(b); System.out.println(a.hashCode()?==?b.hashCode()); System.out.println(a.equals(b)); System.out.println(set); } }
以上就是小編今天的分享了,希望可以幫助到大家。