hashCode和equal方法

简介: hashCode和equal方法

hashCode

总结

  1. 提高具有哈希结构的容器的效率。
  2. 两个引用,如果指向的是同一个对象,则哈希值肯定是一样的。
  3. 两个引用,如果指向的是不同对象,则哈希值是不一样的。
  4. 哈希值主要根据地址号来的,不能完全将哈希值等价于地址。

equal和==

==(比较运算符)的用法

  1. 既可以判断基本类型,又可以判断引用类型
  2. 判断基本类型,它们的值是否相等
  3. 判断引用类型,它们的地址是否相等,即判断是不是一个对象

equal 方法

  1. 是object类中的方法,只能判断引用类型
  2. 默认判断地址是否相等,子类往往重写该方法,用于判断内容是否相等。

为什么要重载equal方法?

答:因为Object的equal方法默认是两个对象的引用的比较,意思就是指向同一内存,地址则相等,否则不相等;如果你现在需要利用对象里面的值来判断是否相等,则重载equal方法。

为什么重载hashCode方法?

答:一般的地方不需要重载hashCode,只有当类需要放在HashTable、HashMap、HashSet等等hash结构的集合时才会重载hashCode,那么为什么要重载hashCode呢?就HashMap来说,好比HashMap就是一个大内存块,里面有很多小内存块,小内存块里面是一系列的对象,可以利用hashCode来查找小内存块hashCode%size(小内存块数量),所以当equal相等时,hashCode必须相等,而且如果是object对象,必须重载hashCode和equal方法。

为什么equals()相等,hashCode就一定要相等,而hashCode相等,却不要求equals相等?

答:

  1. 因为是按照hashCode来访问小内存块,所以hashCode必须相等。
  2. HashMap获取一个对象是比较key的hashCode相等和equal为true。
相关文章
|
Shell Android开发
MT8385 Android AB分区系统升级(命令模式)
MT8385 Android AB分区系统升级(命令模式)
265 0
|
5月前
|
数据采集 人工智能 自然语言处理
模型时代的智能BI—Quick BI:阿里云的数据洞察与决策引擎
阿里云Quick BI是一款企业级智能BI工具,融合大模型技术实现自然语言交互、自动化洞察与预测分析。支持多源数据接入,提供50+图表类型及行业模板,助力敏捷业务分析与AI增强决策。相比Tableau、Power BI等竞品,Quick BI以云原生低成本和通义大模型优势脱颖而出,适用于零售、金融等领域,推动数据民主化与智能化转型。推荐已使用阿里云生态的企业采用,分阶段推广功能以最大化价值。
965 2
深入解析802.11g标准及其频率范围
【8月更文挑战第24天】
466 0
|
Docker 容器
docker设置国内镜像源
docker设置国内镜像源
33543 5
|
Linux Shell 虚拟化
【Linux学习】Linux 的虚拟化和容器化技术
【Linux学习】Linux 的虚拟化和容器化技术
344 1
|
存储 边缘计算 弹性计算
云计算技术与服务
云计算技术与服务
1022 1
|
XML 存储 Java
Spring高手之路12——BeanDefinitionRegistry与BeanDefinition合并解析
本文深入探讨Spring的BeanDefinition和BeanDefinitionRegistry,详细介绍了BeanDefinition的合并过程及其源码分析,揭示了Spring配置元数据的内在逻辑。读者将通过本文理解Spring Bean定义的继承和重用机制,掌握如何动态注册BeanDefinition。
325 0
Spring高手之路12——BeanDefinitionRegistry与BeanDefinition合并解析
|
JSON Prometheus 前端开发
AlertManager实现Email告警(使用Postman测试)
🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习路线:java自学的学习路线 🍋相关学习资料及其参考文章:prometheus手册,邮件和微信告警,Alertmanager篇 🍊 可以去个人博客网站查看本博客排版更清晰:AlertManager实现Email告警
716 0
AlertManager实现Email告警(使用Postman测试)
|
监控 网络协议 安全
DoS和DDoS攻击
DoS和DDoS攻击
4672 0