首页 > 其他分享 >浅谈为什么重写equals方法,就要必须重写hashcode方法

浅谈为什么重写equals方法,就要必须重写hashcode方法

时间:2023-11-27 15:44:06浏览次数:30  
标签:浅谈 相同 equals hashcode key new 重写

在hashmap中是要保证key的唯一,如果新的key放入map中,发现和已有的key相同,那么就要覆盖。那么这个“唯一”是怎么确定的?或者说怎么认为两个key是相同的?那么这里的相同是指内容相同,比如new String("aaa") ,new String("aaa"),new了两个字符串,是两个对象,但是内容是相同的,我们认为他们是相同的key,再比如两个User对象,他们的name和age属性都相同,则认为他们是相同的。如果说的把hashCode去除,去除后,通过equals来比较两个key是否相同,也能达到我们的要求,只不过就要和map中的key一个一个的用equals比较,如果map中有很多元素了,那么效率可能会很低。其实hashmap中使用hashCode的一个目的是“分组”,同一个链表上的key的 hashcode是一样的,如果不重写hashcode,那么两个相同内容的对象,就会放在不同的链表上,那么就会存在两个相同的key,不符合我们的初衷。所以就要重写hashcode,保证有相同内容的对象有相同的hashcode。而且hashcode的结果跟对象的属性有关。如果属性不参与hashcode的计算,那么这个hash算法就无意义。

标签:浅谈,相同,equals,hashcode,key,new,重写
From: https://www.cnblogs.com/dwdiamdalao/p/17859517.html

相关文章

  • 浅谈智能充电桩系统设计
    安科瑞张田田摘要:文章设计了一款电动车智能充电系统,以智能充电桩为数据采集终端,将采集到的电压电流等信息上传给服务器,数据库接受到信息后进行分析并同时传输到客服端。该系统实现了安全高效充电、数据分析、公平计费、节能环保等功能,很大地提高了用户体验,能够有效管理和控制电动车......
  • 重写
    重写:需要有继承关系,子类重写父类方法方法名必须相同参数列表必须相同修饰符:范围可以扩大,但不可以缩小:public>protected>default>private抛出异常:范围可以被缩小,但不能扩大:ClassNotFoundException<Exception子类的方法必须和父类一致;方法体不同为什么需要重写父类的功能子类不一定......
  • 【笔记】kth - 浅谈前 k 优解问题
    【笔记】kth-浅谈前k优解问题第一次见到这一类的trick是在SDOI2013-淘金,现在才知道这个trick还有一堆扩展。Part0.这类问题的一个通用思路:对于目前考虑到的一个状态\(S\),设\(\operatorname{trans}(S)\)为\(S\)的后继状态集合。首先将最优的状态\(S\)放入......
  • 什么时候会重写equals和hashcode方法
    在Java中,通常情况下,当你使用自定义类的实例作为集合的元素、键(key)或者在需要进行对象比较的场景,你可能会需要重写equals()和hashCode()方法。这两个方法在Object类中定义,但默认的实现是基于对象的内存地址,而不是基于对象的内容。通过重写这两个方法,你可以自定义对象相等性的......
  • PyTorch团队重写「分割一切」模型,比原始实现快8倍
    前言 我们该如何优化Meta的「分割一切」模型,PyTorch团队撰写的这篇博客由浅入深的帮你解答。本文转载自机器之心仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。CV各大方向专栏与各个部署......
  • 【转】浅谈调试--赖特
    浅谈调试——赖特何为调试及为什么要调试调试是程序运行结果与期望结果不统一时,在手动计算模拟的前提下编译程序,对比不同,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性的必不可少的步骤。运行代码只能得到两种结果:Ac或Wa。但是程序很笨,不能直接告诉你错哪里......
  • 简单了解SSM框架的作用,面试浅谈
    SSM和SSH是比较流行的Web框架,今天主要说下SSM(其实是我不了解SSH,哈哈);话不多说进入正题,SSM主要构成Spring,SpringMVC,Mybatis三大部分组成,分别说一下他们的作用;首先关于框架的概念:框架:在这里特指软件框架,它是我们在实际开发中解决项目需求的技术集合。运用框架可以大大简化我们的代码......
  • clickhouse-配置浅谈
    clickhouse,全称:clickstreamwarehouse,简称:ck.属于LOAP分类下的数据库类型,且为列式数据库。在mac下,安装简单。brewinstallclickhouse如果想下载源码,则去github官网down即可。涉及相关配置的文件,也可以在源码中翻找。举例:server配置文件所属目录: /ClickHouse......
  • 浅谈字符串哈希 入门
    基本介绍字符串哈希的主要思路是这样的:首先选定一个进制\(P\),对于一个长度为\(N\)的字符串\(S\)的所有\(i(1\leqi\leqn)\)的\(S_1,S_2,...,S_i\)子串表示成\(P\)进制的值预处理记录下来。这样判断\(S_i,S_{i+1},...,S_{i+m-1}\)和\(T_1,T_2,...,T_m\)是否相等......
  • 浅谈微服务架构的设计理念
    微服务架构是一种软件设计和开发的架构风格,将应用程序划分为一组小而自治的服务,每个服务都有自己的数据存储和业务逻辑,并通过轻量级的通信机制相互协作。以下是微服务架构的一些设计理念:1.服务自治性(ServiceAutonomy):核心思想:微服务应该是自治的,即每个服务都独立运行、部署......