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

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

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容