老師最后講的好快啊,為什么上一節(jié)不用重寫hashCode方法,這一節(jié)就需要了呢?

平凡又充滿著夢(mèng)想
2014-10-30
2 回答
舉報(bào)
0/150
提交
取消
2016-07-26
詳細(xì)的可以去看HashMap的contains實(shí)現(xiàn),那里是equals和hashCode兩個(gè)同時(shí)使用了,所以在有Map的時(shí)候,必須兩個(gè)都要驗(yàn)證。HashSet也驗(yàn)證兩個(gè)。但是在ArrayList里不驗(yàn)證hashCode,所以你不重寫hashCode也無(wú)所謂。
equals和hashcode方法要同時(shí)重寫,并且要在equals為true的時(shí)候,hashCode必須要相同。這個(gè)已經(jīng)是一種不成文的規(guī)定了,這兩個(gè)方法要重寫就要一起重寫,而且IDE里也會(huì)將只重寫一個(gè)視為警告。所以這兩個(gè)方法要同時(shí)重寫。
2014-10-30
哥呀兩節(jié)講的都不是一個(gè)內(nèi)容的,上一節(jié)是list,這節(jié)是set,能一樣嗎。。。視頻中也講到了,為什么要重寫hashCode,請(qǐng)哥再仔細(xì)看下視頻講解