“==”,对于基本类型的来,等号是比较其值是不是相等。对于引用类型来说,等号比较两个对象是否相同。
“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计算。