“==”碳柱,對(duì)于基本類(lèi)型的來(lái)熬芜,等號(hào)是比較其值是不是相等。對(duì)于引用類(lèi)型來(lái)說(shuō)瑞侮,等號(hào)比較兩個(gè)對(duì)象是否相同。
“equals”和“hashCode”半火,是Object的方法钮糖。“equals”在Object里面比較的是兩個(gè)對(duì)象是否相等藐鹤,而對(duì)于String來(lái)說(shuō)赂韵,equals重寫(xiě)了,還能對(duì)比其值是不是相等肄满。
“hashCode”是散列數(shù)據(jù)集合時(shí)用來(lái)快速查詢(xún)數(shù)據(jù)使用的质涛。
因?yàn)閔ashCode的特點(diǎn)是相等的對(duì)象,其hashCode一定相同; hashCode的對(duì)象卻不一定是同一個(gè)對(duì)象怒炸。
因此map在插入查詢(xún)數(shù)據(jù)時(shí)毡代,會(huì)先去比較hashCode值是否一致,一致后再去比較是否equals捏鱼,這樣對(duì)于查詢(xún)效率有非常明顯的提高酪耕,因?yàn)閔ashCode比較只是比較的一個(gè)值,而equals比較相對(duì)要復(fù)雜很多看尼。
應(yīng)用實(shí)例:將一個(gè)List引用對(duì)旬的數(shù)據(jù)轉(zhuǎn)為set盟步,并去掉其重復(fù)id數(shù)據(jù)。其關(guān)鍵就是重寫(xiě)equals以及hashCode灾茁。
equals的比較根據(jù)其id 來(lái)判斷,同樣hashCode也以id計(jì)算禀挫。