一文弄懂HashMap中所有的位运算,理解HashMap设计的精妙!

本文深入探讨HashMap为何频繁使用位运算,并详细解释容量计算、寻址、扩容下标计算以及2倍扩容中的位运算原理。通过位运算,HashMap实现高性能和精妙设计,包括初始化、寻址、存储和扩容操作。了解这些位运算,能帮助你更好地理解HashMap的整体设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

大家好,我是春风。

hashmap经常会被作为我们面试的热身问题。当你讲完自我介绍,面试官上下翻看着你的简历,余光还瞟一眼你的状态和形象。

入定,面试官淡淡的说出:请简单讲一下hashmap?或者你理解的hashMap?

其实这种泛泛的问法一般是考验面试者的逻辑能力和表述能力,你是否能有条不紊的讲出hashmap的结构,put大致流程等等,回答时除了流程清晰,我们也可以稍微带一点源码上的理解,来体现我们的深度。

当然很多情况下,你自己不体现,那面试官会帮你体现~

这就是接下来通常会问的hashmap底层原理了,底层原理一般就是揪着源码不放,但是hashmap的源码并不复杂,

重点就是put方法,而put方法又包含初始化表格寻址存数扩容

那在这些源码中,面试官一般最想听的,也最能体现我们深度的就是这些关键代码中频繁出现的位运算。恰恰hashmap的精妙也就在于这些位运算的设计。

下图是我总结的hashmap面试的重点:

 

为什么要频繁使用位运算?

因为位运算是机器码层面的操作,具有得天独厚的性能优势。毕竟任何花里胡哨的事物在我们的计算机里都是一串01的二进制码,直接对这串二进制码做运算会来的更加简单高效。

下面我们就一一来说下,hashmap中有哪些精妙的位运算呢?其实理解完这些位运算后,你对hashmap的整体设计也会有一个更深更全面的认识。

一、容量计算

在说容量计算之前,我们需要先复习一个知识点,hashmap的结构:数组+链表+红黑树,而我们这里的容量计算的并不是全部元素的容量,而是其中数组table的大小。

当我们每次new

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值