JavaSE面试——hashcode和equals

对象调用 hashCode 方法后,会返回一串 int 类型的数字码

java 规定:

1. 两个对象的 hashCode() 相等,那他们的 equals() 不一定相等

2. 两个对象的 equals() 相等,那他们的 hashCode() 必定相等

3. 重写 equals() 方法时一定要重写 hashCode() 方法,无脑写就 ok 

hashCode的设计初衷是提高哈希容器的性能,equals的效率是没有hashCode高的

hashCode

hashCode:对象的散列码,是根据对象的某些信息推导出的一个整数值,默认情况下表示是对象的存储地址。通过散列码,可以提高检索的效率,主要用于在散列存储结构中快速确定对象的存储地址

hashCode 提高检索效率原理:

采用哈希算法(散列算法)来提高从集合中查找元素的效率,将数据按特定算法直接分配到不同区域上。将集合分成若干个存储区域,每个对象可以计算出一个哈希码,可以将哈希码分组(使用不同的hash函数来计算的),每组分别对应某个存储区域,根据一个对象的哈希码就可以确定该对象应该存储在哪个区域,大大减少查询匹配元素的数量。

 假设 hashCode 为内存值,通过 hashCode 和数组长度取余,得到对象应该存储的位置,这样无论是存储元素还是获取元素,通过数组下标就只用操作一次

发生哈希冲突时:采用 equals() 判断是否相等

hashCode() 和 equals() 要同时重写:

hashCode() 用来定位索引位置,以提高效率的同时可能会发生哈希冲突,当发生哈希冲突时,我们就得通过 equals() 方法判断冲突的对象是否相等

如果只重写 hashCode() 方法,那哈希冲突发生时,即使两个对象相等,也不会被判定为重复,会导致数组里存储一堆重复对象

如果只重写 equals() 方法,那两个相等的对象内存地址不相等,还是会导致存储一堆重复元素

所以两个方法最好一起重写

equals():

重写 equals() 方法时一定要重写 hashCode() 方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/711460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三天学会阿里分布式事务框架Seata-SpringCloud Alibaba分布式基础案例搭建

锋哥原创的分布式事务框架Seata视频教程: 实战阿里分布式事务框架Seata视频教程(无废话,通俗易懂版)_哔哩哔哩_bilibili实战阿里分布式事务框架Seata视频教程(无废话,通俗易懂版)共计10条视频&…

日志到filebeat-->logstash-->elastic-->kibana

1、日志到filebeat。 cat /etc/filebeat/filebeat.yml filebeat.inputs: - type: syslog format: rfc3164 protocol.udp: host: "0.0.0.0:514" output.logstash: hosts: ["localhost:5044"] 验证方式: tcpdump -i 网卡名称 udp port 514 2、…

NLog条件配置——实现将包含某个特定字符串日志写入指定文件

需求产生缘由 在开发中为了了解程序在运行的内存状态并记录下来,以便出问题时判断是不是与内存相关。于是实时采集了开发程序需要的内存信息。但采集的内存信息在存储时,以NLog中的Trace级别来存储的话,会与程序其它Trace级别的日志都记录在…

瑞吉苍穹外卖如何拓展?已经经过不同公司多轮面试。项目中会问到哪些问题?以及问题如何解决?

别催了,别催了,先收藏吧。 作者大大正在加班加点完成。 文章会尽快发布,关注收藏,尽请期待。 想要加入并查阅作者的知识库可以联系作者 不要白嫖,通过后,附上关注和收藏截图。 已有众多小伙伴加入 目前…

QtCreator报Failed to parse qmlimportscanner output解决

错误如下: 定位错误位置 增加错误信息打印 打印执行命令 执行打印输出的命令,成功返回JSON 但输出的JSON对象不是json格式,而是命令 增加$$成功输出JSON 使用QtCreator12编译一次后,再使用QtCreator13成功编译通过,问题解决

初学者如何使用QT新建一个包含UI界面的C++项目

文章目录 一、下载并安装QT51、下载安装包2、注册/登录账号3、安装qt6 二、新建QT Widget项目1、新建项目并且运行2、易错点:可能运行成功得到UI界面但是会报错(原因是使用了中文路径) 一、下载并安装QT5 1、下载安装包 进入下载网址 Windo…

C语言系列16——C语言标准库深度揭秘:探索其内核与应用

目录 写在开头1.C语言标准库概览1.1 定义与组成1.2 历史发展简述1.3 C标准库与C标准库的关系 2.标准库的核心组件2.1 输入输出库(stdio.h)2.1.1 定义与作用2.1.2 核心函数和用法2.1.3 常见问题与解决方案 2.2 字符串和字符处理(string.h &…

面试经典150题【41-50】

文章目录 面试经典150题【41-50】49.字母异位词分组1. 两数之和202.快乐数219. 存在重复元素II128.最长连续序列228. 汇总区间56.合并区间(华为面试题)57.插入区间452.用最少的箭引爆气球20.有效的括号 面试经典150题【41-50】 49.字母异位词分组 用这种…

今日话题:---自卑

自卑是一种普遍存在的心理现象,它可能源于个人对自身能力、外貌、社会地位等方面的不满意或不自信。自卑感可能会导致消极的情绪和行为,如焦虑、抑郁、逃避现实等。然而,适度的自卑感也可能激发个人努力提升自己,从而实现自我成长…

TensorBoard的使用,add_image()的使用。

在TensorBoard中,add_image()函数用于将图像数据添加到可视化中。它可以用于显示模型输入、输出、中间特征图等图像数据,以帮助开发者理解模型的运行情况。 add_image()的用法: 使用ctrl点击add_image() 注意:图片类型要求为 t…

机器学习笔记 YOLOv9模型相关论文简读

一、YOLOv9简述 自 2015 年 Yolov1 推出以来,已经出现了多个版本。 基于Darknet的YOLOv2、YOLOv3和YOLOv4 YOLOv5 YOLOv8 基于 Ultralytics。 SCALED-YOLOv4 使用 Pytorch 而不是 Darknet。 YOLOR是YOLOv4的改进。 YOLOX是YOLOv3的改进。 YOLOv6专注于工业应用。 YOLOv7 来自 …

【实战-08】 flink自定义Map中的变量的行为

场景 自定义Map或者别的算子的时候,有时候需要定义一些类变量,在flink内部高并发的情况下需要正确理解这些变量的行为 代码 package com.pg.function;import org.apache.flink.api.common.functions.MapFunction; import org.apache.flink.api.common…

哇去,有了这篇文章,项目中引入了再多的字体包,我都不怕了!!!

通常情况下,我们在开发一个新项目的时候,项目那边通常都会提供一些项目所需的字体包,来满足项目对字体展示的特殊需求。 这部分大家都比较熟悉,就不详细讲了,直接上代码: /* 引入字体包 */ font-face {fo…

异常处理(黑马学习笔记)

当前问题 登录功能和登录校验功能我们都实现了,下面我们学习下今天最后一块技术点:异常处理。首先我们先来看一下系统出现异常之后会发生什么现象,再来介绍异常处理的方案。 我们打开浏览器,访问系统中的新增部门操作&#xff0…

GEE高阶应用python wxee——MODIS气象数据可视化处理(2022年3-9月葡萄牙为例)以及可视化地图加载

MODIS wxee 是专为处理气象数据而设计的,但它在遥感数据方面也很有用。在本示例中,我们将了解 wxee 如何处理 MODIS 传感器的数据,以及如何利用 xarray 对象创建彩色复合图。 安装和设定 #!pip install wxeeimport ee import wxeeee.Authenticate() wxee.Initialize(proje…

前端笔记01---html 的加载

文章目录 HTML<meta><script>MIME CSSHTML 与 DOM 有什么不同MDNMozilla 脏检查依赖注入虚拟 DOM虚拟DOM性能开销 性能性能开销包括哪些方面性能瓶颈性能&#xff1f; 事件事件委托事件冒泡passive: true 合成器线程 HTML html head <meta> <meta> 元素…

贪心算法介绍

贪心算法是一种在求解问题时总是做出在当前看来是最好的选择的算法。它不从整体最优上加以考虑&#xff0c;所做出的选择只是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解&#xff0c;关键是贪心策略的选择&#xff0c;选择的贪心策略必须具备无后效性…

K8S相关小技巧《五》

需求&#xff1a; 作为Kubernetes管理员&#xff0c;前一段时间有收到一个需求&#xff0c;需要创建一个可用的storage class&#xff0c;用于提供给给隔离的用户使用共享磁盘。共享磁盘为NFS磁盘&#xff0c;本例以NFS为例&#xff0c;其他类型的storage class创建也是类似&a…

模型优化_如何提高网络/模型的泛化能力?(全面)

目录 1. 以数据为中心的泛化方法 1.1 使用更多数据 1.2 做好数据预处理 特征工程 1.3 数据增强 1.4 调整数据分布 2. 以模型为中心的泛化方法 2.1 使用更大批次 超参数调优 2.2 调整目标函数 2.3 调整网络结构 2.4 屏蔽网络节点 2.5 权值正则化 2.6 偏差-方差权衡…

防考试作弊切屏

防考试作弊切屏 方法一&#xff1a;监听页面失焦聚焦事件&#xff1a;防止任何操作 监听考试页面失焦事件记录切出时间页面聚焦时累积记录切入时间&#xff0c;累积时间大于1分钟自动交卷并移除时间页面销毁移出事件***bug&#xff1a;必须把事件回调定义为方法&#xff0c;在…