HashMap 学习笔记

news2024/11/26 4:43:08

HashMap:

为什么经常深入考察?

基于java写的代码会访问很多东西,比如数据库,缓存,消息中间件。

HashMap数据结构

底层是数组   原本已经有很多个位置了  原本是取模但是优化成了性能更高的hash&(n-1)

让哈希值高十六位和低十六位异或一下 融合一下特征   然后再去做寻址

寻址算法优化:hash&(n-1)  效果跟hash对n取模是一样的,但是与运算的性能比hash对n取模要高很多,数学问题  数组的长度会一直是2的n次方,只要他保持数组长度是2的n次方

核心点是低十六位的与运算

总结:对每个hash值,在他的低十六位中,让高低十六位进行了异或,让他的低十六位保持了高低十六位的特征,尽量避免一些hash值出现冲突,大家可能会进入数组的同一个位置。

寻址算法优化:用与运算代替取模,提升性能

hash冲突问题:

算出key的hash值,到数组中寻址,找到一个位置,把key-value放入数组,或者从组里取出来,

两个key,多个key与n-1做了与运算后,定位出来的数组还是有一样的可能,这就是hash碰撞

解决方式:链表+红黑树   O(n)和O(logn)

链表达到一定长度后,会转换为红黑树,遍历性能会高于链表

hashMap的扩容:

底层是数组,数组满了之后会自动扩容,变成一个更大的数组,让你在里面可以存放更多的元素

两倍扩容

比如从16扩容到32

rehash的策略

判断二进制结果中是否多出了一个bit的1,如果没多,那就是原来的index,如果多了出来,那么就是index+oldCap,通过这个方式,就避免了rehash的时候,用每个hash对新数组length取模,取模性能不高,位运算性能更高

体悟:他的意思是这样的,当长度扩容成32后,我们是不是要把之前的元素打散?那么我们把第一个元素放在1,而第二个元素放在17,第三个元素放在2,第四个元素放在18.

这样元素就更加分散了

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

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

相关文章

【性能测试】5年测试老鸟,总结性能测试基础到指标,进阶性能测试专项......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 性能测试是为了评估…

java 接口,接口的特性,接口实现多态,面向接口编程

package cn.zy.cellphone; /**接口是一种引用数据类型。使用interface声明接口,形式* 形式:public interface 接口名称{}* 接口不能拥有构造方法,不能用于创建对象*接口可以多继承。一个接口可以继承多个其他接口*列如:public interface Broa…

任何人都可以学习车载测试吗?车载测试有什么门槛?

1、车载测试是什么? 车载测试分很多种,有软件测试、硬件测试、性能测试、功能测试等等,每一项测试的内容都不一样,我们所说的车载测试主要指的是汽车软件的功能测试,也就是针对汽车实现的某一个功能,而进行…

windows平台多版本nodejs共存工具nvm-windows 中文文档

2023年4月14日11:11:49 官网地址:https://github.com/coreybutler/nvm-windows 下载地址:https://github.com/coreybutler/nvm-windows/releases nodejs版本列表 https://nodejs.org/en/download/releases PS C:\Users\pc\Desktop> nvm -h Running ve…

关于测试,我发现了哪些新大陆

关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师在课堂上使用龙测为我们展示了一波测试的相关操作,我发现了一些新大陆,这篇文章就记录一下有关测试的相关操作。 开启测试之旅 进入官网了解到 龙测…

java学习之接口二

目录 一、接口vs继承 一、继承 二、接口 二、接口多态特性 一、多态参数 二、多态数组 三、多态传递 三、接口练习 一、接口vs继承 一、继承 package com.hspedu.interface_;public class ExtendsVsInterface {public static void main(String[] args) {LittleMonkey…

5G物理层信道pdcch说明(留档)

网络七层协议OSI是一个开放性的通信系统互连参考模型。 它是国际标准组织制定的一个指导信息互联、互通和写作的网络规范。 开放:是指只要遵循OSI标准,位于世界的任何地方的任何系统之间都可以进行通讯;开放系统:是指遵循互联网协…

【结构型模式】装饰者模式

文章目录优秀借鉴1、概述2、结构3、实现方式3.1、案例引入3.2、实现步骤3.3、案例实现4、装饰者模式优缺点5、结构型模式对比5.1、装饰者模式和代理模式5.2、装饰者模式和适配器模式6、应用场景优秀借鉴 装饰模式 — Graphic Design Patterns设计模式 | 装饰者模式及典型应用黑…

基于图卷积神经网络GCN的二部图链路预测方法实现思路和完整代码【可用于疾病-靶点、miRNA-疾病等相关预测】

本文解决的问题 基本假设:二部图只有邻接矩阵,没有节点特征,并且进行链路预测,有部分链路未知。 如果你有初始节点特征,直接换掉即可 实现思路 这段代码主要是用于构建一个基于图卷积神经网络(GCN&#…

内网域渗透总结(红日靶场一)

一、靶场环境搭建 红日靶场:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/靶机通用密码:hongrisec2019win7win2003win2008 这个搭建靶场的过程是我经过实际操作(踩坑)总结的最简单省事的方式。 首先创建一个仅主机模式的…

使用appuploader工具发布证书和描述性文件教程

使用APPuploader工具发布证书和描述性文件教程 之前用AppCan平台开发了一个应用,平台可以同时生成安卓版和苹果版,想着也把这应用上架到App Store试试,于是找同学借了个苹果开发者账号,但没那么简单,还要用到Mac电脑的…

数据结构之图(最小生成树+最短路径)

基本概念 连通:若a->b存在路径,即为连通 连通图:该图中任意两点均连通,即为连通图 连通分量:下图为无向图,但存在三个连通分量 强连通图:双向的连通图 强连通分量:有向图中的双…

分享一个免梯子智能的问答工具ChatGPT,刷题和学习的好帮手

使用了这个问答工具后,感觉前后端都要被替代了,太强了。 由于本人之前很想体验,但是一直难搞,最近发现了一个免梯子的,重要事情说一遍,免梯子!是我最近发现的最好用,最快的,且不要梯子的,用起来爽,界面也挺好看的,大家快玩儿玩儿。 试了一下写代码,写文案……真棒…

文心一言 VS chatgpt (9)-- 算法导论2.3 7题 3.1 1题

七、描述一个运行时间为O(nlgn)的算法,给定n个整数的集合S和另一个整数,该算法能确定 S中是否存在两个其和刚好为工的元素。 文心一言: 这里是一个运行时间为O(nlgn)的算法,可以用来确定集合 S 中是否存在两个元素,它…

FE_CSS 页面布局之定位

1 为什么需要定位 某个元素可以自由的在一个盒子内移动位置,并且压住其他盒子。 当我们滚动窗口的时候,盒子是固定屏幕某个位置的。 以上效果,标准流或浮动都无法快速实现,此时需要定位来实现。 浮动可以让多个块级盒子一行没有…

第四章 word2vec 的高速化

目录4.1 word2vec 的改进①4.1.1 Embedding 层4.1.2 Embedding 层的实现4.2 word2vec 的改进②4.2.1 中间层之后的计算问题4.2.2 从多分类到二分类4.2.3 sigmoid 函数和交叉熵误差4.2.4 多分类到二分类的实现4.2.5 负采样4.2.6 负采样的采样方法4.2.7 负采样的实现4.3 改进版 w…

组态王与FX5U之间如何快速实现无线通讯?

本方案是基于Modbus RTU协议下实现的1主多从自组网无线通信形式,主站为组态王,从站为两台三菱FX5U PLC。在工厂里,组态王和plc所处位置距离较为分散,重新铺设电缆线工期长,成本高,故采用日系PLC专用无线通讯…

【Halcon 笔记2】参数

一、图形参数 图形参数 Iconic, 包括 image, region, XLD 1.1 image 图像由一个或者多个通道组成,是大小相同的矩阵,包含各种像素类型的灰度值 在图像显示界面,按ctrl健,可以查看当前的像素值 灰度图 一个通道像素点存放在一个…

STM32开发(十四)STM32F103 数据手册 —— 通用定时器 PWN 详解

文章目录主要特点通用定时器内部框图功能描述计数器模式计数器时钟可选择时钟源PWM输入模式STM32F103内部通用定时器包括TIMx (TIM2、 TIM3、 TIM4和TIM5)定时器 主要特点 16位向上、向下、向上/向下自动装载计数器 16位可编程(可以实时修改)预分频器,计数器时钟频…

【MySQL学习】认识MySQL数据库

目录一、什么是数据库二、主流数据库三、MySQL数据库的基本使用3.1 MySQL的安装3.2 MySQL服务器管理3.3 连接MySQL服务器3.4 MySQL服务器,数据库与表之间的关系3.5 使用案例3.6 数据存储四、MySQL架构五、SQL分类六、存储引擎6.1 定义6.2 查看存储引擎6.3 存储引擎对…