重写hashcode和没有重写的区别

简介: 重写hashcode和没有重写的区别

重写hashcode和没有重写的区别


1.public boolean equals(Object obj),和hashcode()方法是object对象中的方法。

1.public boolean equals(Object obj),和hashcode()方法是object对象中的方法。


  • 如果两个对象相同(即用equals比较返回true),那么它们的hashCode值一定要相同;
  • 如果两个对象的hashCode相同,它们并不一定相同(即用equals比较返回false)即


(1)当obj1.equals(obj2)为true时,obj1.hashCode() == obj2.hashCode()必须为true

(2)当obj1.hashCode() == obj2.hashCode()为false时,obj1.equals(obj2)必须为false


3为啥重写equals?


如果不重写equals,那么比较的将是对象的引用是否指向同一块内存地址,重写之后目的是为了比较两个对象的value值是否相等。

特别指出利用equals比较八大包装对象(如int,float等)和String类(因为该类已重写了equals和hashcode方法)对象时,

默认比较的是值,在比较其它自定义对象时都是比较的引用地址


4.什么是hashcode?


hashcode是用于散列数据的快速存取,如利用HashSet/HashMap/Hashtable类来存储数据时,

都是根据存储对象的hashcode值来进行判断是否相同的。

由于为了提高程序的效率才实现了hashcode方法,先进行hashcode的比较,如果不同,

那没就不必在进行equals的比较了,这样就大大减少了equals比较的次数,这对比需要比较的数量很大的效率提高是很明显的,


其实简单的说就是为了保证同一个对象,保证在equals相同的情况下hashcode值必定相同,

如果重写了equals而未重写hashcode方法,可能就会出现两个没有关系的对象equals相同的 (因为equal都是根据对象的特征进行重写的),但hashcode确实相同的

目录
相关文章
|
存储 API
一种新的方法来存储用户信息——ThreadLocal
一种新的方法来存储用户信息——ThreadLocal
1513 0
|
JavaScript 对象存储
在阿里云OpenAPI 为什么oss 图片链接, 在浏览器访问直接下载了,不是预览呢?
在阿里云OpenAPI 为什么oss 图片链接, 在浏览器访问直接下载了,不是预览呢?
2076 1
|
2月前
|
Java
分析Java中的static、final以及static final关键字的不同用法。
综上所述,static, final以及 static final关键字在Java编程中有着明确和关键的角色。static使成员独立于类的实例而存在,final保证值或行为的不可变性,而 static final组合了静态成员的共享特性和常量的不可变性。这些特性在设计类的时候,对于资源共享、安全性保证和优化性能都是至关重要的。
192 0
|
SQL XML Java
【MyBatis】 MyBatis与MyBatis-Plus的区别
【MyBatis】 MyBatis与MyBatis-Plus的区别
6915 0
【MyBatis】 MyBatis与MyBatis-Plus的区别
|
Java 关系型数据库 数据库
Spring Boot多数据源及事务管理:概念与实战
【4月更文挑战第29天】在复杂的企业级应用中,经常需要访问和管理多个数据源。Spring Boot通过灵活的配置和强大的框架支持,可以轻松实现多数据源的整合及事务管理。本篇博客将探讨如何在Spring Boot中配置多数据源,并详细介绍事务管理的策略和实践。
1193 3
|
9月前
|
存储 安全 Java
ConcurrentLinkedQueue详解
通过本文的介绍,希望您能够深入理解 `ConcurrentLinkedQueue`的工作原理、主要特性、常用方法以及实际应用,并在实际开发中灵活运用这些知识,编写出高效、健壮的并发程序。
244 3
|
存储 Web App开发 编解码
图片:前端展示图像(img 、picture、svg、canvas )及常用图片格式(PNG、JPG、JPEG、WebP、GIF、SVG、AVIF等)
图片:前端展示图像(img 、picture、svg、canvas )及常用图片格式(PNG、JPG、JPEG、WebP、GIF、SVG、AVIF等)
1463 1
|
缓存 Windows
一文教会你如何重装Windows10系统【过程+图解+说明】
该博客文章是一份详细的Windows 10系统重装教程,包括制作过程、图解说明和注意事项,作者分享了自己制作启动盘并成功安装系统的经验,适合初学者参考。
一文教会你如何重装Windows10系统【过程+图解+说明】