集合之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两个方法,并使得相同的对象具有相等的哈希值。
- 集合之equals与hashCode方法
- HashSet集合---HashCode方法与equals方法
- java 集合中hashcode与equals方法
- hashCode()与equals()方法
- hashCode与equals方法
- equals方法与hashcode方法
- 集合类hashCode()方法和equals()方法
- java equals与hashCode方法
- Java equals()与hashCode()方法
- equals与hashCode方法详解
- 集合重新hashcode()和equals()方法
- java面试题之hashCode与equals()方法
- 集合之hashCode()方法
- hashCode与equals Set 集合排序
- 集合中 hashcode 与 equals 的关系
- 重写equals()时为什么也得重写hashCode()之深度解读equals方法与hashCode方法渊源
- 解读equals方法与hashCode方法渊源
- java中hashCode方法与equals方法
- 详解c++指针的指针和指针的引用
- 电脑阅卷系统
- 轻松掌握Kotlin委托机制
- 筛选固定长度的字符串并在其后添加字符
- DCMTK学习之读取DcmDataset对应tag的值
- 集合之equals与hashCode方法
- 本地访问admin,没有管理员权限
- mysql下以标准时间格式输出存储的时间戳数据
- 网络基础
- [前台js]暴力拆词工具目前单字符语言仅支持中文
- php日期对比date_create(),date_diff()函数的使用
- leetcode_ Add to List 108. Convert Sorted Array to Binary Search Tree
- 文件上传与下载
- C#中网页文件下载——HttpWebRequest与HttpWebResponse的使用方法