搜索
首页Javajava教程总结equals与hashCode用法介绍

总结equals与hashCode用法介绍

Jun 20, 2017 pm 04:50 PM
equalshashcode方法集合

一  equals

equals方法是Object级的,默认对比两个对象的内存地址,很多类都重写了该方法,对比对象的实际内容,一般对比同一类对象相同属性的属性值是否相同。

二 hashCode

1.哈希表

哈希表是一个数组,数组中的每一个元素都是一个单向链表,同一单向链表中的节点具有相同的属性,属性值是数组的下标,这个相同的属性被称作hashCode哈希值。

2.hashCode哈希值的作用与意义

在hashCode产生前,检索集合需要逐个对比,查询效率低。如果根据某一属性将集合中属性值相同的元素分为一组,集中存储,查询时先获取查询对象该属性的值,依据该值定位到对应的组别,大大缩小了查询范围,提高了查询效率,这就是hashCode产生的背景。

两个对象的hashCode相等,只是表明两者在同一组别中,不能保证一定相同,还要对比两个对象的内存地址或者通过equals方法对比具体内容,只有该项满足以后,才能确定两个对象相同。

由上可知,在哈希表中,相同的两个对象必定具有相同的哈希值。

3.hashCode()方法

hashCode()方法是Object级的,默认基于对象的内存地址生成一个int数值,该数值与内存地址一对一对应,由于通过equals确认相同的两个对象只是保证相同属性的属性值相同,在不重写hashCode的情况下,哈希值不同,存放到哈希表中时被当两个不同内容的对象处理,导致哈希表中出现内容相同的两个元素,占用不必要的内存,因此一旦重写了equals方法,必须重写hashCode方法,并且确保相同的对象具有相等的值。

三 应用

哈希值主要应用于哈希表,HashMap与HashSet的底层是哈希表,因此要想将一个对象存放到HashMap或者HashSet中,必须重写该类中的equals与hashCode两个方法,并使得相同的对象具有相等的哈希值。

以上是总结equals与hashCode用法介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器