久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

〖JAVA經(jīng)驗(yàn)〗只要覆蓋equals()方法,,就應(yīng)該覆蓋hasCode()方法

 觀天落子 2013-06-16

不一定需要覆蓋的.....

 

    覆蓋hashcode類(lèi)主要用要set集合里面..

 

    在set集合中為了確保集合元素的唯一性,集合中沒(méi)有重復(fù)的元素,插入的時(shí)候會(huì)用equals()方法按照內(nèi)存地址來(lái)比較對(duì)象是否相等,當(dāng)你的equals()方法沒(méi)有被覆蓋時(shí),比較得出兩個(gè)object地址為true,其哈希碼一定也相同,

 

    當(dāng)你覆蓋了equals()方法的,可能你比較出來(lái)的equals()結(jié)果是true,但兩個(gè)object的在內(nèi)存中存放地址不同,哈希碼可能會(huì)不同,這就的話(huà)hashset這個(gè)就無(wú)法正常運(yùn)行,所以為了保證HashSet正常工作,這時(shí)要同時(shí)覆蓋HashCode()方法....  

 

    Examda提示:在Object類(lèi)中定義了hashCode()和equals()方法,Object類(lèi)的equals()方法按照內(nèi)存地址比較對(duì)象是否相等,,因此如果object1.equals(object2)為true,,表明object1變量和object2變量實(shí)際上引用同一個(gè)對(duì)象,那么object1和object2的哈希碼肯定也相同,也就是說(shuō)object1.hashCode()==object2.hashCode()

 

    如果用戶(hù)定義的類(lèi)覆蓋了Object類(lèi)的equals()方法,,但是沒(méi)有覆蓋Object類(lèi)的hashCode()方法,,就會(huì)導(dǎo)致當(dāng)object1.equals(object2)為true 時(shí),而object1 和object2的哈希碼不一定一樣。

 

    所以如果覆蓋了equals()方法,,也應(yīng)該覆蓋hashCode()方法,,并且保證2個(gè)相等的object對(duì)象的哈希碼也一樣

 

    代碼:

 

    ObjectChild覆蓋Object類(lèi)的equals()方法

 

    public boolean equals(Object o){

 

    if(this==0) return true;

 

    if(! (o instanceof ObjectChild)) return false;

 

    final ObjectChild other = (ObjectChild) o ;

 

    if(this.name.equals(other.getName()) && this.age == other.getAge())

 

    //這里假定的ObjectChild 是一個(gè)JavaBean 對(duì)象,含有name 和age 2個(gè)屬性,,如果name和age相同,,則看為同一個(gè)對(duì)象

 

    return true;

 

    else

 

    return false;

 

    }

 

    ObjectChild覆蓋Object類(lèi)的hashCode()方法

 

    //Examda提示:返回自定義方法計(jì)算出的hashCode值,使得擁有相同屬性的對(duì)象擁有相同的hashCode;

 

    public int hashCode(){

 

    int result;

 

    result = (name==null?0:name.hashCode());

 

    result = 29*result + (age==null?0:age.hashCode());

 

    return result;

 

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多