第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

為何Set中的contains 方法運(yùn)用的是hashCode+equals的模式 而List里面是equals的 模式?

hashCode表示的是對(duì)象的地址吧,那直接equals不就行了?

正在回答

4 回答

詳細(xì)的可以去看HashMap的contains實(shí)現(xiàn),那里是equals和hashCode兩個(gè)同時(shí)使用了,所以在有Map的時(shí)候,必須兩個(gè)都要驗(yàn)證。HashSet也驗(yàn)證兩個(gè)。但是在ArrayList里不驗(yàn)證hashCode,所以你不重寫hashCode也無所謂。

equals和hashcode方法要同時(shí)重寫,并且要在equals為true的時(shí)候,hashCode必須要相同。這個(gè)已經(jīng)是一種不成文的規(guī)定了,這兩個(gè)方法要重寫就要一起重寫,而且IDE里也會(huì)將只重寫一個(gè)視為警告。所以這兩個(gè)方法要同時(shí)重寫。



0 回復(fù) 有任何疑惑可以回復(fù)我~

equals 方法在非空對(duì)象引用上實(shí)現(xiàn)相等關(guān)系:

自反性:對(duì)于任何非空引用值 x,x.equals(x) 都應(yīng)返回 true。

對(duì)稱性:對(duì)于任何非空引用值 x 和 y,當(dāng)且僅當(dāng) y.equals(x) 返回 true 時(shí),x.equals(y) 才應(yīng)返回 true。

傳遞性:對(duì)于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 應(yīng)返回 true。

一致性:對(duì)于任何非空引用值 x 和 y,多次調(diào)用 x.equals(y) 始終返回 true 或始終返回 false,前提是對(duì)象上 equals 比較中所用的信息沒有被修改。

對(duì)于任何非空引用值 x,x.equals(null) 都應(yīng)返回 false。

Object 類的 equals 方法實(shí)現(xiàn)對(duì)象上差別可能性最大的相等關(guān)系;即,對(duì)于任何非空引用值 x 和 y,當(dāng)且僅當(dāng) x 和 y 引用同一個(gè)對(duì)象時(shí),此方法才返回 true(x == y 具有值 true)。

注意:當(dāng)此方法被重寫時(shí),通常有必要重寫 hashCode 方法,以維護(hù) hashCode 方法的常規(guī)協(xié)定,該協(xié)定聲明相等對(duì)象必須具有相等的哈希碼。


參數(shù):

obj - 要與之比較的引用對(duì)象。

返回:

如果此對(duì)象與 obj 參數(shù)相同,則返回 true;否則返回 false。


0 回復(fù) 有任何疑惑可以回復(fù)我~

Set的子類是HashSet,具體什么原因不知道,不過通過子類初始化,就存在hash了不是嗎

0 回復(fù) 有任何疑惑可以回復(fù)我~

因?yàn)長ist 那里沒有用到 hash 的方法,一般情況下我們重寫都會(huì)把兩個(gè)都重寫的。

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

qq電子時(shí)代

List中對(duì)equals進(jìn)行重寫,重寫以前是怎么執(zhí)行的,重寫后又怎么執(zhí)行的 能不能舉舉例子
2016-04-11 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

為何Set中的contains 方法運(yùn)用的是hashCode+equals的模式 而List里面是equals的 模式?

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)