美文网首页
“equals”与“==”、“hashCode”的区别和使用场景

“equals”与“==”、“hashCode”的区别和使用场景

作者: vanzh | 来源:发表于2019-05-13 10:14 被阅读0次

“==”,对于基本类型的来,等号是比较其值是不是相等。对于引用类型来说,等号比较两个对象是否相同。

“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计算。

相关文章

网友评论

      本文标题:“equals”与“==”、“hashCode”的区别和使用场景

      本文链接:https://www.haomeiwen.com/subject/gdokaqtx.html