为什么在重写equals方法时都要重写equals方法呢:
来源:互联网 发布:外汇查询软件下载 编辑:程序博客网 时间:2024/06/05 22:50
首先equals与hashcode间的关系是这样的:
1、如果两个对象相同(即用equals比较返回true),那么它们的hashCode值一定要相同;
2、如果两个对象的hashCode相同,它们并不一定相同(即用equals比较返回false)
自我的理解:由于为了提高程序的效率才实现了hashcode方法,先进行hashcode的比较,如果不同,那没就不必在进行equals的比较了,这样就大大减少了equals比较的
次数,这对比需要比较的数量很大的效率提高是很明显的,一个很好的例子就是在集合中的使用;
我们都知道java中的List集合是有序的,因此是可以重复的,而set集合是无序的,因此是不能重复的,那么怎么能保证不能被放入重复的元素呢,但靠equals方法一样比较的
话,如果原来集合中以后又10000个元素了,那么放入10001个元素,难道要将前面的所有元素都进行比较,看看是否有重复,欧码噶的,这个效率可想而知,因此hashcode
就应遇而生了,java就采用了hash表,利用哈希算法(也叫散列算法),就是将对象数据根据该对象的特征使用特定的算法将其定义到一个地址上,那么在后面定义进来的数据
只要看对应的hashcode地址上是否有值,那么就用equals比较,如果没有则直接插入,只要就大大减少了equals的使用次数,执行效率就大大提高了。
继续上面的话题,为什么必须要重写hashcode方法,其实简单的说就是为了保证同一个对象,保证在equals相同的情况下hashcode值必定相同,如果重写了equals而未重写
hashcode方法,可能就会出现两个没有关系的对象equals相同的(因为equal都是根据对象的特征进行重写的),但hashcode确实不相同的
- 为什么在重写equals方法时都要重写equals方法呢:
- 那为什么在重写equals方法时都要重写equals方法呢:
- 为什么在重写equals方法时都要重写hashCode
- 如何重写Equals方法呢
- 重写equals方法时都要重写equals方法
- 为什么重写equals方法要重写hashCode
- 什么时候需要重写equals方法?为什么重写equals方法,一定要重写HashCode方法?
- 为什么要重写hashcode和equals方法
- 为什么要重写equals和hashCode方法
- 为什么要重写equals和hashcode方法
- 为什么要重写hashcode和equals方法?
- 为什么重写equals方法要重写hashCode方法
- JAVA中重写equals()方法为什么要重写hashcode()方法?
- JAVA中重写equals()方法为什么要重写hashcode()方法?
- 为什么重写equals方法,一定要重写HashCode方法?
- JAVA中重写equals()方法为什么要重写hashcode()方法?
- 为什么重写equals方法,一定要重写HashCode方法?
- Java重写equals方法时为什么要重写hashcode方法
- [iOS]图片压缩&保存View为内容Img
- HDU 2377 Bus Pass 最短路
- Http协议简介
- Objective-C编码规范
- QTcreator的一些设置
- 为什么在重写equals方法时都要重写equals方法呢:
- 常见的笔记本电池使用技巧
- Appium系列文章1: Appium开发环境搭建
- maven->jar包
- 上传文件
- 从fragment跳转到activity , 返回到指定fragment页面
- SPRING 整合IBATIS或者hibernate等持久数据层流程与实现
- 关于Class.forName(className).newInstance()介绍
- Android所有的自带系统图片