hashMap 源码详解

news2024/12/23 13:40:32

1、 HashMap 底层源码解读(源码分析+知识问答)

在这里插入图片描述

2、 什么是哈希碰撞?或者什么是哈希冲突?为什么会发生哈希冲突?

不同的关键字通过相同的哈希函数算出了一个相同的 哈希地址,这就叫做哈希冲突。
哈希冲突主要因为 哈希表底层的数组容量是小于实际存储的关键字的数量,所以发生冲突是必然的,我们只能够尽量避免,不能完全消除。

3、 如何设计哈希函数?你了解哈希函数怎么设计吗?

引起哈希冲突的一个方面就是哈希函数设计的不够合理。哈希函数设计的越精妙,产生哈希冲突的可能性就越低,但是无法避免哈希冲突
设计哈希函数我们的原则是
1).降低碰撞和溢出的产生
2).哈希函数设计简单
3).函数计算的地址尽量均与分布在整个空间提高空间利用率。

4、 常见的哈希函数

常见的哈希函数,可以说出来两三个,随便解释一下

除留余数法
设置散列表中允许的地址数为m,取一个不大于m,但是接近于m或者等于m 的质数p作为除数,按照哈希函数:
Hash(key) = key%p ,将关键字转换成哈希地址

直接定址法
计算关键字的某个线性函数得到哈希地址
Hash(key) = A*key+B
优点: 设计简单、均匀分布
缺点:需要事先知道关键字的分布情况
适用的场景:查找比较小且连续的情况

5、 如何避免哈希冲突?

设计更合理的哈希函数
哈希函数设计的越精妙,产生冲突的概率就越低。

调节负载因子
什么是负载因子,负载因子就是 填入表中的元素数量/散列表的长度

在这里插入图片描述

负载因子和冲突率的关系是成正比的,因为填入表中的元素不能够改变,所以我们只能调节数组的长度。
所以降低冲突率,就是降低负载因子的大小,因此我们只能够把增大散列表的长度(到达阈值扩容)来降低冲突率。

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

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

相关文章

App Store搜索广告如何筛词

苹果应用市场投放搜索广告,想要达到预期目标,需要长期的并且不断的优化。除了选词和出价思路需要进行决策之外,后期如何做好筛词和调价的优化也是非常重要的。 CPA是衡量关键词获取用户成本的指标,当应用的转换率较小并且CPA大于…

旗开得胜,高考:人生的一次逆袭之旅

亲爱的读者们,大家好! 明天就是一年一度的高考,这个注定会改变莘莘学子一生的重要时刻即将到来。在这个充满期待和紧张的日子里,我想与你们分享一个关于我自己高考的故事,希望能给你们带来鼓励和启示。 那是一个阳光…

chatgpt赋能python:Python字段截取函数

Python字段截取函数 在Python编程中,经常会遇到需要从字符串中截取特定字段的情况,比如从URL中截取域名、从邮件地址中截取用户名等等。Python提供了多种方法来实现这些功能,其中包括字符串的切片、正则表达式、split()函数等等。在本文中&a…

关于分布式项目的补偿机制(案例总结)

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、…

走近人工智能|NLP的语言革命

前言: 自然语言处理(NLP)是指使用计算机处理和理解人类语言的技术。 文章目录 自然语言序言背景适用领域技术支持应用领域程序员如何学总结 自然语言 序言 自然语言处理(Natural Language Processing,NLP&#xff09…

scratch绘制多彩五角星 中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析2023年5月

目录 scratch绘制多彩五角星 一、题目要求 1、准备工作 2、功能实现 二、案例分析

口琴试试看

自己的第一把口琴 给初学者入门的口琴推荐指南,选购口琴不再困难(2023.2更新) 初学者入门口琴选购 (复音/半音阶/布鲁斯十孔口琴推荐) 推荐半音:三种类型的口琴,该学哪一种?十孔口琴低音还面…

Android系统的Ashmem匿名共享内存子系统分析(2)- 运行时库cutils的Ashmem访问接口

声明 其实对于Android系统的Ashmem匿名共享内存系统早就有分析的想法,记得2019年6、7月份Mr.Deng离职期间约定一起对其进行研究的,但因为我个人问题没能实施这个计划,留下些许遗憾…文中参考了很多书籍及博客内容,可能涉及的比较…

带领你打开C++的神秘之门--完结篇

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 &#x1f…

【耗时一月】AWS Aurora 数据库 Failover 处理方案

Aurora简述 Amazon Aurora 是亚马逊自研的云原生数据库,除兼容性、性能、扩展性外,它在设计之初,就以极致的可用性作为目标,尽可能减少故障对应用程序的影响。 Amazon Aurora 在故障恢复方面的设计理念主要包括: 1. 能…

Lecture 11 Contextual Representation

目录 Problems with Word Vectors/Embeddings 词向量/嵌入的问题RNN 语言模型Bidirectional RNN 双向 RNNEmbeddings from Language Models 基于语言模型的嵌入ELMo 架构Downstream Task: POS Tagging 下游任务:词性标注ELMo 的表现如何?Other Findings上…

Word控件Spire.Doc 【其他】教程(7): 使用象征符号在 Word 中绘制复选框

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

河北沃克HEGERLS仓储货架生产厂家|夹抱式伸缩货叉四向穿梭车新型物流机器人

众所周知仓库作业主要是围绕存取、搬运、拣选、输送分拣而进行的,而随着物流作业的多样化、复杂化,四向穿梭车作为新的存储技术,以其灵活、柔性等特点而备受瞩目。河北沃克在成功研发四向穿梭车的基础上又对其进行了产品的横向发展。目前&…

为什么会有刷掉第一名、刷掉400+的院校?

本期为大家整理热门院校-“南昌大学”的择校分析,这个择校分析专题会为大家结合:初试复试占比、复试录取规则(是否公平)、往年录取录取名单、招生人数、分数线、专业课难度等进行分析。希望能够帮到大家! –所有数据来源于研招网…

数据库信息速递 10年的数据库使用习惯变革,数据库的使用习惯在被改变 (译)...

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

苹果的头显,只要看一眼就行

阅读本文大概需要 1.66 分钟。 今年的 WWDC23 开发者大会,不少人表示 iOS 更新了个寂寞,但 Vision Pro 头显却意外吸引眼球,看来苹果工程师都忙着搞头显去了。 苹果的头显终于还是来了,关于它的传闻,似乎这几年从未间断…

【立体视觉(一)】之成像原理与镜头畸变

【立体视觉(一)】之成像原理与镜头畸变 一、成像原理一)针孔模型二)坐标系转换1. 世界坐标系到相机坐标系2. 相机坐标系到图像坐标系3. 图像坐标系到像素坐标系4. 相机坐标系到像素坐标系5. 世界坐标系到像素坐标系 二、镜头畸变一…

数据结构 | 图的遍历(C语言)

一、数据结构定义 1、图 #define MaxVertexNum 100 // 最大可存储的节点数目/*图*/ typedef char VexterType; typedef int EdgeType;typedef struct GraphMatrix {VexterType Vexs[MaxVertexNum]; //结点 EdgeType Edges[MaxVertexNum][MaxVertexNum]; //边int vexnum, a…

【区块链】以太坊L2扩容方案与零知识证明

以太坊L2扩容方案与零知识证明 简介 简要概述以太坊L2层现有解决方案简要概述以太坊L2未来扩容的方向简要概述零知识证明的基本概念和零知识证明在以太坊的运用简要概述stark ware的两个产品,但并不推荐现有使用和研究简要概述polygon zkEVM,推荐使用和…

纷享销客斩获“2022-2023年度用户推荐SaaS品牌”

近日,纷享销客受邀出席CSIC2023第八届SaaS应用大会暨云领奖颁奖典礼活动。纷享销客作为国内领先的CRM 云厂商,凭借产品创新以及强大的行业解决方案能力,以绝对实力荣获“2022-2023年度用户推荐SaaS品牌”。 据悉, C SIC云领奖自 …