java ==和equals的區(qū)別 為什么要同時(shí)實(shí)現(xiàn)hashCode和equals?
為什么要同時(shí)實(shí)現(xiàn)hashCode和equals?1. 重寫equals方法時(shí),需要重寫hashcode方法,主要用于map、set等集合類型;TA:map、set等集合類型中存儲(chǔ)的對(duì)象必須唯一;要判斷
為什么要同時(shí)實(shí)現(xiàn)hashCode和equals?
1. 重寫equals方法時(shí),需要重寫hashcode方法,主要用于map、set等集合類型;TA:map、set等集合類型中存儲(chǔ)的對(duì)象必須唯一;要判斷兩個(gè)對(duì)象是否相等,集合類首先判斷equals是否相等。如果equals返回true,則還判斷hashcode的返回值是否為true。只有當(dāng)兩者都返回true時(shí),才能認(rèn)為這兩個(gè)對(duì)象相等。T2。因?yàn)閷?duì)象的hashcode返回對(duì)象的hash值,所以即使equals返回true,集合也可能確定兩個(gè)對(duì)象不相等。因此,必須重寫hashcode方法,以確保當(dāng)equals返回true時(shí),hashcode也返回true,這樣存儲(chǔ)在集合中的對(duì)象就可以是唯一的。