社区
刘英杰的课程社区_NO_4
Java程序员面试宝典视频课程之容器(九)
帖子详情
8-13 使用 HashSet存储自定义对象为什么需要重写 hashCode()和 equals()
l363130002
2023-01-12 14:47:02
课时名称
课时知识点
8-13 使用 HashSet存储自定义对象为什么需要重写 hashCode()和 equals()
...全文
103
回复
打赏
收藏
8-13 使用 HashSet存储自定义对象为什么需要重写 hashCode()和 equals()
课时名称课时知识点8-13 使用 HashSet存储自定义对象为什么需要重写 hashCode()和 equals()
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
java中为何
重写
equals
时必须
重写
hashCode
方法详解
主要给大家介绍了关于java中为什么
重写
equals
时必须
重写
hashCode
方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
需要
的朋友们下面随着小编来一起学习学习吧
为什么在
重写
equals
方法的同时必须
重写
hashcode
方法
Object 类是所有类的父类,其
equals
方法比较的是两个
对象
的引用指向的地址,
hashcode
是一个本地方法,返回的是
对象
地址值。他们都是通过比较地址来比较
对象
是否相等的
equals
与
hashCode
的约定
Java高频面试题:
equals
与
hashCode
的约定。具体实战代码见附件
equals
:判断两个
对象
的逻辑相等(默认比较内存地址,
重写
后可比较属性);
hashCode
:返回
对象
的哈希值,用于哈希表(HashMap/
HashSet
)的快速查找; 核心约定: 若两个
对象
equals
相等,则
hashCode
必须相等; 若两个
对象
hashCode
相等,
equals
不一定相等(哈希冲突);
重写
equals
时必须
重写
hashCode
,否则哈希容器会失效。
equals
和
hashCode
两者效果分析详解.docx
但是为什么JavaDoc明确的告诉我们,
hashCode
()和
equals
()要一起
重写
呢?原因是因为,在Java自带的容器HashMap和
HashSet
中, 都需同时要用到
对象
的
hashCode
()和
equals
()方法来进行判断,然后再插入删除元素,这点我们一会再谈。 那么我们还是单独来看
hashCode
(),为什么HashMap
需要
用到
hashCode
?这个就涉及到HashMap底层的数据结构 – 散列表的原理: HashMap底层用于
存储
数据的结构其实是散列表(也叫哈希表),散列表是通过哈希函数将元素映射到数组指定下标位置, 在Java中,这个哈希函数其实就是
hashCode
()方法。
Java中的
equals
和
hashCode
方法详解1
如果一个类的
hashCode
()方法没有遵循上述要求,那么,当这个类的两个实例
对象
用
equals
()方法比较的结果相等时,他们本来应该无法被同时
存储
进set集合
刘英杰的课程社区_NO_4
1
社区成员
277
社区内容
发帖
与我相关
我的任务
刘英杰的课程社区_NO_4
复制链接
扫一扫
分享
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章