“==”,對于基本類型的來,等號是比較其值是不是相等。對于引用類型來說,等號比較兩個對象是否相同。
“equals”和“hashCode”,是Object的方法。“equals”在Object里面比較的是兩個對象是否相等,而對于String來說,equals重寫了,還能對比其值是不是相等。
“hashCode”是散列數據集合時用來快速查詢數據使用的。
因為hashCode的特點是相等的對象,其hashCode一定相同; hashCode的對象卻不一定是同一個對象。
因此map在插入查詢數據時,會先去比較hashCode值是否一致,一致后再去比較是否equals,這樣對于查詢效率有非常明顯的提高,因為hashCode比較只是比較的一個值,而equals比較相對要復雜很多。
應用實例:將一個List引用對旬的數據轉為set,并去掉其重復id數據。其關鍵就是重寫equals以及hashCode。
equals的比較根據其id 來判斷,同樣hashCode也以id計算。