集合之equals与hashCode方法

来源:互联网 发布:sql的cast函数转date 编辑:程序博客网 时间:2024/05/21 16:21

集合之equals与hashCode方法

 

一  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两个方法,并使得相同的对象具有相等的哈希值。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 白玉蜗牛下蛋了怎么办 黄牛卖不出的票怎么办 鸡受风寒不产蛋怎么办 蛋鸡感冒不下蛋怎么办 牛肉煮老了怎么办 牛肉炖碎了怎么办 比值审敛法等于1怎么办 华为手机停止运行怎么办 易事通卡怎么办延期 三星手机照相机故障怎么办 凌晨一点到机场怎么办 凌晨3点醒来怎么办 凌晨四五点咳嗽怎么办 凌晨4点大便怎么办 熊猫小课付了费怎么办 华为手机系统升级后卡机怎么办 孕妇汗脚脚臭怎么办 巴基斯坦留学生丢失护照怎么办 vivox20耳机进水了怎么办 轴圆齿之间间隙大怎么办 浩辰cad2017保存不了怎么办 会议无poster版块怎么办 大四考研失败了怎么办 博士退学老师不同意怎么办? 贴双眼皮眼皮松怎么办 dpf灯亮了怎么办 60岁社保没交满怎么办 老公素质太差怎么办 耿彦波退休了太原怎么办 宫腔镜三天后同房了怎么办 开关失灵关不了怎么办 灯的开关关不掉怎么办? 身上毛孔粗大怎么办呀 脸被牙膏灼伤怎么办 wifi要登录认证怎么办 本科没有选导师怎么办 预授权撤销了怎么办 软件连不上网怎么办 手机屏幕出现有道词典怎么办 孩子总觉得没错怎么办 孩子动手打父母怎么办