为什么重写equals()方法就必须重写hashCode()方法
2024-09-04 05:10:06
hashCode()和equals()保持一致,如果equals方法返回true,那么两个对象的hasCode()返回值必须一样。如果equals方法返回false,hashcode可以不一样,但是这样不利于哈希表的性能,一般我们也不要这样做。重写equals()方法就必须重写hashCode()方法的原因也就显而易见了。
假设两个对象,重写了其equals方法,其相等条件是属性相等,就返回true。如果不重写hashcode方法,其返回的依然是两个对象的内存地址值,必然不相等。这就出现了equals方法相等,但是hashcode不相等的情况。这不符合hashcode的规则。下边,会介绍在集合框架中,这种情况会导致的严重问题。
最新文章
- SVN 使用锁实现独占式签出
- 学习mongo系列(十一)关系
- zabbix3.0.4 部署之一 (简介)
- hibernate核心接口,和扩展接口。回顾笔记,以前没记,现在补上,纯手工敲的。
- 新版本 JSAPI微信支付V3 C# DEMO
- springmvc(1)--配置
- DAO设计模式 -- 使用数据库连接类连接MySql数据库并实现添加用户
- Native App, Hybrid App, Web App对比
- codeforces 388C 	 Fox and Card Game
- 【HDOJ】3459 Rubik 2×2×2
- java基础(9) - 泛型解析
- asp.net 使用rabbitmq事例
- LeetCode(105):从前序与中序遍历序列构造二叉树
- MVC 多语言
- 批量 kill mysql 线程
- 域控场景下windows安全日志的分析--审计认证行为和命令的历史记录
- POJ3692 Kindergarten
- Flex tree加三状态的Checkbox
- CSS 基础知识
- Python调用nmap扫描网段主机信息生成xml