首页 > 其他分享 >【知识点】hashcode和equals

【知识点】hashcode和equals

时间:2024-03-29 13:56:10浏览次数:31  
标签:知识点 return name equals hashcode 哈希 id

哈希计算(Hashing)是一种将数据通过哈希函数(Hash Function)转换成固定长度的值(hash value)的过程,是一个通用的计算方式。

在Java中的表现就是hashcode()方法,在Object类上,常用于HashMapHashSet等集合中,用于快速查找、唯一约束等作用。

equals()方法是从逻辑上判断两个对象是否相等,如果两个对象相等,那么他们的哈希值也应该相等。
反之则不是必然,哈希值相等的两个对象不一定相等,即hashcode()方法返回相同值但是equals()返回false,这就是哈希冲突

因此重写equals()时必须重写hashcode(),这样可以保证在使用哈希表等基于哈希值的数据结构时能够正常工作。

一个学生类重写equals和hashcode方法的例子
public class Student {
    private Long id;
    private String name;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return Objects.equals(id, student.id) && Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, name);
    }
}

标签:知识点,return,name,equals,hashcode,哈希,id
From: https://www.cnblogs.com/code-blog/p/18103709

相关文章

  • 网络工程师之路由交换组合配置知识点相关技术方法解析
    网络工程师之路由交换组合配置相关技术方法解析交换机部分配置参数vlanif的配置环回的配置vlanbatch配置允许通过trunk口ospf的配置disospfpeerbdisipconospf带宽:默认100bandwidth-reference10000{所有运行ospf的都改}100/10010000/100备份配置:创......
  • 面试题知识点笔记-MySQL开发
    目录可以使用MySQL直接存储文件(ppt,exel,图像等)吗?什么时候存,什么时候不存?Emoji乱码怎么办?存储的时候有遇到过什么问题吗?如何存储ip地址?长文本如何存储?大段文本如何设计表结构?大段文本查找时如何建立索引?有没有在开发中使用过TEXT,BLOB数据类型日期,时间如何存......
  • 面试题知识点笔记-MySQL日志
    目录MysqI会产生几种日志?binlog作用是什么?redolog作用是什么?undolog作用是什么?Mysql日志是否实时写入磁盘?binlog刷盘机制是如何实现的?redolog刷盘机制是如何实现的?undolog刷盘机制是如何实现的?MySQL的binlog有有几种录入格式?分别有什么区别?Mysq!集群同......
  • [SpringMVC]知识点
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18032069出自【进步*于辰的博客】目录1、什么是SpringMVC?1.1概述1.2示例6、restful风格6.1概述6.2使用细节7、自定义异常处理器8、自定义类型转换器最后1、什么是Spring......
  • 必备知识点 模版
    模版1.寻找html模版TEMPLATES=[{'BACKEND':'django.template.backends.django.DjangoTemplates','DIRS':[os.path.join(BASE_DIR,'templates')],'APP_DIRS':True,'OPTION......
  • 必备知识点 模型层ORM
    模型层ORM1.Django连接MySQL数据库1.1配置mysql参数#MySQL配置项DATABASES={'default':{#ENGINE:默认的引擎mysql'ENGINE':'django.db.backends.mysql',#HOST:主机地址127.0.0.1/localhost"HOST"......
  • 必备知识点 视图
    4.视图1.视图参数#urls.pyurlpatterns=[path('login/',account.login,name="login"),path('auth/',order.auth,name='auth'),]#views.pyfromdjango.shortcutsimportHttpResponsedeflogin(request):re......
  • 必备知识点 路由
    django必备知识点路由1.Django生命周期请求流程图浏览器>>发送请求(Http请求)>>web服务网关接口(django默认的wsgiref模块不能承受高并发,最大只有1000左右)>>中间件>>缓存数据库(返回给中间件已经缓存过的数据)>>urls.py(路由层)>>views.py(视图层)>>templates(......
  • 软考中级软件设计师【结构化开发】知识点+题目
      一、耦合   耦合是模块之间的相对独立性(相互连接的紧密程度)的度量。耦合取决于各个模块之间接口的复杂程度、调用模块的方式以及通过接口的信息类型等,有以下几个类型。   无直接耦合:指两个模块之间没有直接关系,它们分别属于不同模块的控制和调用,它们之间不......
  • Go Template 常用疑难知识点
    前段时间,在项目开发中经常和go语言的HTMLLtemplate打交道,特意总结了几点我在使用中经常遇到不太明确的,比较纠结疑惑的知识点,巩固一下,也方便以后查找。​ 至于关于gotemplate的系统性的介绍说明,这是一篇我经常查看的文章,写的非常全面。1、作用域访问​ gotemplate中最常打交......