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