数据结构底层之HashMap(面经篇1)

news/2024/7/7 20:41:57 标签: 数据结构, java, 开发语言

1 . 讲一下hashmap的数据结构

   HashMap是一种基于哈希表实现的数据结构,通常用于关联键值对,其中键是唯一的,而值可以重复。在Java中,HashMapjava.util.Map接口的一个实现,它提供了快速的查找、插入和删除操作。

数据结构

HashMap的核心结构包括以下组成部分:

  1. 数组HashMap的底层是一个数组,这个数组的每个位置(通常称为“桶”或“槽”)可以存放一个或多个键值对。数组的大小通常是2的幂,以便能够高效地进行哈希值到数组索引的转换。

  2. 链表或红黑树:在数组的每个位置,如果多个键的哈希值映射到同一个数组索引上(这种情况称为哈希冲突),那么这些键值对会被组织成一个链表或者在某些情况下是红黑树。从Java 8开始,当链表中的节点超过一定阈值(默认为8)且数组达到最小大小(默认为64),链表会转换为红黑树,以提高查找效率。

  3. 节点(Node):每个键值对被封装在一个节点对象中,这个对象包含了键、值、哈希码和指向下一个节点的引用。在Java 8中,为了支持链表和红黑树的转换,引入了更复杂的节点类型,如  TreeNode

工作原理

  1. 哈希函数:当插入一个新的键值对时,首先会计算键的哈希码,这通常由键对象的hashCode()方法提供。然后,这个哈希码经过一定的运算(如按位与运算)被转换为数组索引。

  2. 冲突解决:如果两个或更多键的哈希值映射到同一个索引,它们会被添加到该索引处的链表或红黑树中。

  3. 查找:当需要查找一个键时,首先计算其哈希码并找到相应的数组索引。然后遍历该位置上的链表或红黑树,使用equals()方法比较键,直到找到匹配的键为止。

  4. 调整大小(Resize):当HashMap中的元素数量超过了其容量乘以加载因子(默认为0.75)时,HashMap会自动调整其大小(通常增加为两倍),并将所有元素重新散列到新的数组中。这个过程称为“rehashing”。


http://www.niftyadmin.cn/n/5535222.html

相关文章

Ueditor中集成135编辑器

一、背景 在资讯项目平台运营过程中,资讯需要排版,一般都是在135编辑器排好以后,复制到平台中UEditor编辑器中,所以,他们建议集成一下135哈 二、了解135编辑器 开始调研了解135编辑器,发现人家就支持集成…

HarmonyOS ArkUi Tabs+TabContent+List实现tab吸顶功能

Demo效果 Entry Component struct StickyNestedScroll {State message: string Hello WorldState arr: number[] []scroller new Scroller()StyleslistCard() {.backgroundColor(Color.White).height(72).width("100%").borderRadius(12)}build() {Scroll(this.sc…

记录通过Cloudflare部署属于自己的docker镜像源

引言 由于最近国内无法正常拉取docker镜像,然而找了几个能用的docker镜像源发现拉取回来的docker镜像不是最新的版本,部署到Cloudflare里Workers 和 Pages,拉取docker 镜像成功,故记录部署过程。 部署服务 登录Cloudflare后&…

深入学习索引

1.索引的底层数据结构是什么?索引是如何实现的? 索引的底层数据结构是Btree(多路树) 当设置了字段为索引以后,底层会将字段上的数据使用BTree的数据结构存储在索引文件里 2.索引的优缺点 优点:索引字段作为条件查询更快 缺点&…

【字符串处理】【双指针】个人练习-Leetcode-777. Swap Adjacent in LR String

题目链接:https://leetcode.cn/problems/swap-adjacent-in-lr-string/description/ 题目大意:给两个字符串start, end,只包含XLR三种字符。可以进行一次操作将XL转换成LX或者将RX转换为XR,返回是否存在方法使得start能转换成end …

HX4004A-MFC 低噪声、稳压电荷泵DC/DC转换器芯片IC

一般描述 该HX4004A是一个低噪声开关电容电压倍。它产生一个调节输出电压从2.7V到4.5V的输入。低的外部零件数量(VIN和VOUT处一个飞行电容和两个小型旁路电容)使HX4004A非常适合小型电池供电应用。 该HX4004A具有热关断能力,可以生存从VOUT到GND的连续…

普通集群与镜像集群配置

目录 一. 环境准备 二. 开始配置集群 三. RabbitMQ镜像集群配置 四. 安装并配置负载均衡器HA 一. 环境准备 关闭防火墙和selinux,进行时间同步 主机名系统IP服务rabbitmq-1 Rocky_linux9.4 192.168.226.22RabbitMQ,MySQLrabbitmq-2Rocky_linux9.41…

Excel 中的元素定位:相对定位、绝对定位和混合定位

在Excel中,单元格引用有三种主要类型:相对定位、绝对定位和混合定位。 这些类型主要用于公式和函数中,决定在复制或拖动公式时引用如何变化。 1. 相对定位 相对定位指的是不带“$”符号的单元格引用,例如 A1。 这种引用方式在…