在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 為什么java重寫equals的時候 要重寫hashCode?

為什么java重寫equals的時候 要重寫hashCode?

為什么java重寫equals的時候 要重寫hashCode?
我認(rèn)為有兩點(diǎn)需要關(guān)注:

  1. hashCode是不是重寫需要看業(yè)務(wù),開放開發(fā)人員可以重寫這個方法,可能有這種情況,比如我們僅僅對比object的部分屬性,就認(rèn)為兩者相等,而不對比其其他屬性。
  2. 重寫java object hashCode方法,是為了在一些算法中避免我們不想要的沖突和碰撞。比如其HashMap,HashSet的使用中。
回答
編輯回答
久礙你

我覺得主要還是第二點(diǎn),避免碰撞和沖突。
hashCode 用在 集合類 中標(biāo)識單個對象,個人認(rèn)為還是有必要重寫的。

而且當(dāng)程序員 業(yè)務(wù)實(shí)體對象被創(chuàng)建出來后,可能能夠合理利用,但是其他人在使用該對象的時候沒必要特別留意 hashCode。
apache commons 提供了幫助方法,挺好用的:

    @Override
    public int hashCode() {
        return HashCodeBuilder.reflectionHashCode(this);
    }
2017年4月23日 06:30