首页 > 其他分享 >为什么使用HashMap的键存的是自定义的键时需要重写hashcode和equals方法?

为什么使用HashMap的键存的是自定义的键时需要重写hashcode和equals方法?

时间:2023-08-21 19:55:19浏览次数:40  
标签:HashMap 自定义 重写 object equals hashcode 方法

当hashMap的键存的是自定义的键时需要重写对象的hashcode和equals方法

   存入的是对象时,应该hashMapd的键不能存储的值不能相同,如果重写方法的hashcode()方法,他会默认调用object类的hashcode方法,但是

object的hashcode方法时地址值计算出来的hash值,并不是内容,这个时候就需要重写这个类的hashcode方法,但是hashcode计算出的值有可能回发生hash碰撞,这个时候就需要用equals去对比了,不重写equals方法的话默认调用的也是object的equals方法比较的是地址值,所以也需要重写equals方法

去比较内容是否相同。

如何重写hashcode和equals方法

可以在idea中快捷键Alt+insert键选中重写hashcode和equals方法

标签:HashMap,自定义,重写,object,equals,hashcode,方法
From: https://www.cnblogs.com/zgd1/p/17646935.html

相关文章

  • Apipost中自定义接口字段如何配置
    Apipost项目设置中可以配置接口文档中的自定义接口字段,创建状态码字典。分享分档时会展示到文档页面状态码字典在状态码字典中可以自定义状态码即其含义自定义的状态码会在分享的API文档中展示接口属性接口属性中可以自定义接口和接口文档展示字段,在接口属性中添加一个时间类型字段......
  • Apipost中自定义接口字段如何配置
    Apipost项目设置中可以配置接口文档中的自定义接口字段,创建状态码字典。分享分档时会展示到文档页面状态码字典在状态码字典中可以自定义状态码即其含义 自定义的状态码会在分享的API文档中展示 接口属性接口属性中可以自定义接口和接口文档展示字段,在接口属性中添加一......
  • Django自定义中间件验证用户token信息
    1.新建middleware.pyfromdjango.urlsimportreversefromrest_framework.responseimportResponsefromutils.tokenimportcheck_tokenfromdjango.httpimportJsonResponse,HttpResponseRedirectfromyshop.modelsimportMyUsertry:fromdjango.utils.de......
  • SpringBoot复习:(37)自定义ErrorController
    所有接口统一返回的数据格式packagecn.edu.tju.domain;publicclassMyResponse{privateintcode;privateStringmessage;privateStringexception;privateStringstack;publicintgetCode(){returncode;}publicvoidse......
  • 前端项目实战壹佰柒拾陆react-admin+material ui-react-admin之Create之构建自定义字
    我是歌谣微信公众号关注前端小歌谣import{useRecordContext,Show,SimpleShowLayout}from'react-admin';constBookAuthor=()=>{constrecord=useRecordContext();if(!record)returnnull;return<span>{record.author}</span>;};......
  • 【算法】用c#实现自定义字符串编码及围栏解码方法
    编写一个函数/方法,它接受2个参数、一个字符串和轨道数,并返回ENCODED字符串。编写第二个函数/方法,它接受2个参数、一个编码字符串和轨道数,并返回DECODED字符串。然后使用围栏密码对其进行解码。这种密码用于通过将每个字符沿着一组“竖状轨道”依次放在对角线上来对字符串进行编......
  • C# .NET 使用HttpClient,以及自定义Header中存在特殊字符的处理方式
    平常我们在使用HttpClient时,只需要创建加上设置调用接口地址就可以使用了,比如:HttpClienthttpClient=httpClientFactory.CreateClient();httpClient.BaseAddress=newUri(接口地址);httpClient.PostAsync(接口方法,HttpContent);但是,在自定义Header......
  • 前端vue自定义柱形图 选中更改柱形图颜色及文字标注颜色
    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随意的进行组合。大大提升开发效率......
  • 前端Vue自定义等分底部菜单导航按钮 自适应文字宽度 可更改组件位置
    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随意的进行组合。大大提升开发效率......
  • mybatis设置命名格式转换 与 批量插入更新&select查询返回自定义实体类 的sql写法
    在mybatis的配置文件中设置了Java实体类驼峰命名与表属性下划线命名的自动转换。在mybatis中,从接口获取到大量数据之后,将数据集合分批量插入更新到表中。在mybatis中,select查询表数据,返回数据的存储类型为自定义的实体类。1.设置Java实体类驼峰命名与表属性下划线......