当前位置: 首页 > news >正文

HashMap相关专题

前置知识:异或运算

异或运算介绍
异或有什么神奇之处(应用)?
(1)快速比较两个值
(2)我们可以使用异或来使某些特定的位翻转,因为不管是0或者是1与1做异或将得到原值的相反值;
(3)我们使用异或来判断一个二进制数中1的数量是奇数还是偶数
(4)校验和恢复
(5)经典题目:不使用其他空间,交换两个值
(6)最最常出现的面试题:一个整型数组里除了N个数字之外,其他的数字都出现了两次,找出这N个数字;

HashMap详解

必读:参考文章

HashMap的长度为什么是2的幂次方

推荐阅读
今天在看面试指南里的HashMap,看到HashMap长度为什么是2的幂次方时没太读懂,特别是最后一段为什么一定要
是2的幂次方这个等式才成立,这里也没有明说在这里插入图片描述
经过一番查证才搞明白,原来是因为2的幂次方的二进制表示只有一个1,其余都是0。例如,2的幂次方的二进制表示为:1, 10, 100, 1000,等等。现在考虑 length - 1,它的二进制表示就是 length 的二进制表示中的所有1。例如,如果 length 是 8,那么 length - 1 的二进制表示就是 7 的二进制表示为 111。因此,hash & (length-1) 实际上就是保留 hash 的二进制表示中的低位,忽略掉高位(因为低位们就是余数)。这样就能保证取模运算 hash % length 的效果和位运算 hash & (length-1) 是一样的,但是位运算的速度更快。
举例:
hash=1235,length=8
1235%8=3
1235=0100 1101 0011,7=0111
0100 1101 0011 & 0111 = 0011(3)

http://www.lryc.cn/news/253610.html

相关文章:

  • threejs WebGLRenderer 像素比对画布大小的影响
  • RocketMQTemplate.send() 与 RocketMQTemplate.syncSend() 方法详解
  • 波奇学C++:类型转换和IO流
  • 集成开发环境 PyCharm 的安装【侯小啾python基础领航计划 系列(二)】
  • Java核心知识点整理大全27-笔记(已完结)
  • 1. 使用poll或epoll创建echo服务器
  • 【对象数组根据属性排序】
  • BACnet I/O模块:楼宇自动化的未来选择
  • android项目实战之使用框架 集成多图片、视频的上传
  • MyBatis查询优化:枚举在条件构建中的妙用
  • Isaac Sim教程04 Isaac Sim的高级使用
  • 《数据结构、算法与应用C++语言描述》-线索二叉树的定义与C++实现
  • 删除误提交的 git commit
  • 机器学习---pySpark案例
  • 【链表Linked List】力扣-24 两两交换链表中的节点
  • 企业微信协议开发,API接口调用
  • 代码随想录算法训练营 ---第五十五天
  • 【Intel/Altera】 全系列FPGA最新汇总说明,持续更新中
  • 利用flask将yolov5算法封装成在线推理服务
  • vue3父子传值实现弹框功能
  • C++入门【2-C++ 数据类型】
  • 按照官网文档 通过useExtendedLib扩展库 引入WeUI,报错 组件未定义 | 解决办法
  • Chat-GPT原理
  • GODOC命令无效,原因是需要手动安装
  • 忽略python运行出现的大量警告
  • 【Polar靶场WEB签到】
  • Linux详解——常用命令(二)
  • TCP首部格式_基本知识
  • MIT线性代数笔记-第23讲-微分方程,exp(At)
  • windows下安装配置kafka