課程
/后端開發(fā)
/Java
/Java入門第三季
還是沒明白 為什么containsKey就不用重寫,containsValue就要重寫呢》
2016-06-21
源自:Java入門第三季 6-4
正在回答
contains一定會涉及判斷相等這一步
現(xiàn)在請題主自己定義一下對象在什么情況下相等?
如果對象里面有五個(gè)屬性,題主可能會說:那就是五個(gè)屬性都相等才相等啊
嗯,這確實(shí)挺貼近“相等”這個(gè)詞的含義的,然而sun公司的程序員不這么認(rèn)為,
嚴(yán)格來說,Map和List中的元素(對象)和題主你給contains方法傳的參數(shù)肯定不是同一個(gè)對象
所以他們永遠(yuǎn)不是絕對相等的,所以老師沒有重寫的時(shí)候會輸出false
而并不是所有的時(shí)候我們都需要這個(gè)對象里面所有的屬性都相等才認(rèn)為他們相等,
往往只需要主鍵相等,學(xué)習(xí)了關(guān)系型數(shù)據(jù)庫就明白什么是主鍵了,舉個(gè)栗子:身份證號碼是主鍵,名字不是主鍵
重寫equals,hashcode可以讓程序知道這個(gè)程序員判斷相等的標(biāo)準(zhǔn)是什么,
其實(shí)key也可以重寫,只是key往往是基本數(shù)據(jù)類型或者String,只是他們都只有一個(gè)屬性,想不想等就它一個(gè)說了算。
說了一大堆廢話,希望可以給新手解惑,不過等你們以后再回過頭想,上面還真的是一堆廢話,
qq_為了美好的明天
如果Key也是自定義對象類型,當(dāng)然也要重寫,只不過一般沒人吧Key也作為自定義對象類型吧
舉報(bào)
Java中你必須懂得常用技能,不容錯(cuò)過的精彩,快來加入吧
3 回答為什么containskey()不用重寫equals方法呢
4 回答為啥containsKey()方法不需要重寫equals()方法????
2 回答containsValue方法為啥要重寫equals方法?。繂为?dú)重寫hashcode方法不行嗎?
2 回答為什么要重寫equals方法呢
2 回答重寫后還是false
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-07-27
contains一定會涉及判斷相等這一步
現(xiàn)在請題主自己定義一下對象在什么情況下相等?
如果對象里面有五個(gè)屬性,題主可能會說:那就是五個(gè)屬性都相等才相等啊
嗯,這確實(shí)挺貼近“相等”這個(gè)詞的含義的,然而sun公司的程序員不這么認(rèn)為,
嚴(yán)格來說,Map和List中的元素(對象)和題主你給contains方法傳的參數(shù)肯定不是同一個(gè)對象
所以他們永遠(yuǎn)不是絕對相等的,所以老師沒有重寫的時(shí)候會輸出false
而并不是所有的時(shí)候我們都需要這個(gè)對象里面所有的屬性都相等才認(rèn)為他們相等,
往往只需要主鍵相等,學(xué)習(xí)了關(guān)系型數(shù)據(jù)庫就明白什么是主鍵了,舉個(gè)栗子:身份證號碼是主鍵,名字不是主鍵
重寫equals,hashcode可以讓程序知道這個(gè)程序員判斷相等的標(biāo)準(zhǔn)是什么,
其實(shí)key也可以重寫,只是key往往是基本數(shù)據(jù)類型或者String,只是他們都只有一個(gè)屬性,想不想等就它一個(gè)說了算。
說了一大堆廢話,希望可以給新手解惑,不過等你們以后再回過頭想,上面還真的是一堆廢話,
2016-06-22
如果Key也是自定義對象類型,當(dāng)然也要重寫,只不過一般沒人吧Key也作為自定義對象類型吧