課程
/后端開(kāi)發(fā)
/Java
/Java入門第三季
rt
2016-01-16
源自:Java入門第三季 6-1
正在回答
首先你得明白contains方法的原理。
如上圖,contains(obj)的原理是:
遍歷List中所有的元素。
每遍歷一個(gè)元素,就調(diào)用這個(gè)元素的equals()方法,判斷這個(gè)元素是否與contain(obj)傳入的obj相同。
即Element.equals(obj);
若有一個(gè)相同,則返回true
若所有都不相同,則返回false
那么,既然是要調(diào)用List中每個(gè)元素的equals方法。而現(xiàn)在List的元素都是什么呢?
在這里,就是之前放進(jìn)去的Course類的對(duì)象。也就是說(shuō),當(dāng)contains()遍歷每個(gè)對(duì)象,再調(diào)用每個(gè)對(duì)象的equals()方法時(shí),實(shí)際上是調(diào)用Course類中的equals()方法。既然你想要equals()方法能做別的事情,只要重寫它就好了。
兩個(gè)object是通過(guò)內(nèi)存地址來(lái)比較時(shí)候相同,即使是屬性相等的兩個(gè)對(duì)象,如果過(guò)對(duì)應(yīng)的不是同一個(gè)地址,那么用系統(tǒng)默認(rèn)的equal比較時(shí)就會(huì)返回false
舉報(bào)
Java中你必須懂得常用技能,不容錯(cuò)過(guò)的精彩,快來(lái)加入吧
2 回答判斷List中是否存在課程,
1 回答為什么在Course中重新定義equals方法?
2 回答為什么在Course類中重寫equals方法,而不是在別的地方呢?
1 回答為什么要在Course類中重寫equal方法,能不能在其他類中重寫?
4 回答判斷set中的課程是否存在時(shí)報(bào)錯(cuò)
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2016-02-20
首先你得明白contains方法的原理。
如上圖,contains(obj)的原理是:
遍歷List中所有的元素。
每遍歷一個(gè)元素,就調(diào)用這個(gè)元素的equals()方法,判斷這個(gè)元素是否與contain(obj)傳入的obj相同。
即Element.equals(obj);
若有一個(gè)相同,則返回true
若所有都不相同,則返回false
那么,既然是要調(diào)用List中每個(gè)元素的equals方法。而現(xiàn)在List的元素都是什么呢?
在這里,就是之前放進(jìn)去的Course類的對(duì)象。也就是說(shuō),當(dāng)contains()遍歷每個(gè)對(duì)象,再調(diào)用每個(gè)對(duì)象的equals()方法時(shí),實(shí)際上是調(diào)用Course類中的equals()方法。既然你想要equals()方法能做別的事情,只要重寫它就好了。
2016-01-17
兩個(gè)object是通過(guò)內(nèi)存地址來(lái)比較時(shí)候相同,即使是屬性相等的兩個(gè)對(duì)象,如果過(guò)對(duì)應(yīng)的不是同一個(gè)地址,那么用系統(tǒng)默認(rèn)的equal比較時(shí)就會(huì)返回false