面试八股——HashMap

实现原理

红黑树是为了解决链表过长之后,查找时间过长的问题,将链表存储变为红黑树存储。

put方法的实现(5⭐)

相关属性:

1. 容量:初始容量为2^4。

2. 加载因子:初始值为0.75

上面两个属性的作用是用来计算扩容阈值

put流程:

首先,判断用于存放键值对的table是否为空,若为空则要先初始化长度为16的table

然后,根据key计算其对应的索引值i。如果table[i]==null,则直接插入,随后判断插入后的容量是否大于扩容阈值,若大于则进行扩容。如果table[i]!=null,则先判断key是否存在,若key存在则直接覆盖value,如果key不存在,则将键值对插入红黑树或链表中(如果是链表则要判断插入之后的长度是否大于8,以判断是否将链表变为红黑树)。



HashMap的扩容机制(4⭐)

关于e.hash&oldCap可以看链接HashMap 在扩容时为什么通过位运算 (e.hash & oldCap) 得到新数组下标-CSDN博客

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

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

相关文章

【面试经典 150 | 回溯】单词搜索

文章目录 写在前面Tag题目来源解题思路方法一:回溯 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾…

Cloudflare高级防御规则 看看我的网站如何用防御的

网站已趋于稳定,并且经过nginx调优。我想先分享一下Cloudflare的WAF规则,因为这是最有效的防御之一,可以抵御大量恶意攻击流量,我已经验证了数月。 对于海外独立站电商网站,Cloudflare的CDN服务是首选,它强…

1. 深度学习笔记--神经网络中常见的激活函数

1. 介绍 每个激活函数的输入都是一个数字,然后对其进行某种固定的数学操作。激活函数给神经元引入了非线性因素,如果不用激活函数的话,无论神经网络有多少层,输出都是输入的线性组合。激活函数的意义在于它能够引入非线性特性&am…

【ZZULIOJ】1091: 童年生活二三事(多实例测试)(Java)

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy code 题目描述 Redraiment小时候走路喜欢蹦蹦跳跳,他最喜欢在楼梯上跳来跳去。 但年幼的他一次只能走上一阶或者一下子蹦上两阶。 现在一共有N阶台阶,请你计算一下Redraiment从第0阶到第N阶…

代谢组数据分析七:从质谱样本制备到MaxQuant搜库

前言 LC-MS/MS Liquid Chromatography-Mass Spectrometry(LC-MS/MS ,液相色谱-质谱串联)可用于残留化合物检测、有机小分子检测、鉴定和定量污染物以及在医药和食品领域添加剂检测和生物小分子等检测。 LC-MS/MS一般包含五个步骤&#xff…

为什么叫“机器学习”Machine Learning 而不是叫“计算机学习”?

有一门学科“机器学习”火了起来,它是计算机科学与数学结合的产物,它的目的是使计算机“聪明”起来,实现人工智能。可是,令人困惑的是它明明就是计算机学习,为什么不叫“计算机学习”而叫“机器学习”呢?这…

PCB概念(进程控制块)—— 操作系统(形象解释版)

在操作系统里,PCB就像是每个进程的小秘密日记。它记录了进程的所有私事,比如身份信息、运行状态、内存地址啦,CPU信息等,还有进程优先级之类的东西。 简单来说,操作系统用它来把握和控制所有进程的行踪,确…

剧情游戏如何制作?

制作剧情游戏是一个令人兴奋且富有挑战性的过程!首先,你需要有一个扎实的故事框架,这个框架可以是一个详细的剧本或者是一个简要的大纲。在设计故事时,考虑到玩家的选择和互动是非常重要的,因为这些选择会影响到游戏的…

50. 【Android教程】xml 数据解析

xml 是一种标记扩展语言(Extension Mark-up Language),学到这里大家对 xml 语言一定不陌生,但是它在 Android 中的运用其实只是冰山一角。抛开 Android,XML 也被广泛运用于各种数据结构中。在运用 xml 编写 Android 布…

HashMap的底层存储介绍

HashMap底层实现采用了哈希表,这是一种非常重要的数据结构。对于我们一行理解很多技术都非常有帮助。 数据结构中由数组和链表来实现对数据的存储,他们各有特点。 (1)数组:占用空间连续。寻址容易,查询速…

openlayer 使用ol-ext插件实现凸显区域

使用ol-ext插件实现凸显多变形 效果如图 1、创建openlayer var map; var view; var tileLayer, source, vector;function init() {tileLayer new ol.layer.Tile({source: new ol.source.TileArcGISRest({url: "http://map.geoq.cn/arcgis/rest/services/ChinaOnlineStr…

Windows 10 使用 Vagrant 快速创建虚拟机

一、下载 VirtualBox 官网地址:Oracle VM VirtualBox 阿里云盘:阿里云盘分享 二、安装 VirtualBox 安装软件前请先确认 CPU 是否开启了虚拟化,要求开启 2.1、双击运行可执行文件后点击下一步 2.2、选择安装路径,为了避免中文乱码…

Rust Web开发实战:构建高效稳定的服务端应用

如果你厌倦了缓慢、占用大量资源且不稳定的模板化Web开发工具,Rust就是你的解决方案。Rust服务提供了稳定的安全保证、非凡的开发经验,以及能够自动防止常见错误的编译器。 《Rust Web开发》教你使用Rust以及重要的Rust库(如异步运行时的Tokio、用于Web…

OpenFeign修改HttpClient为Apache HttpClient 5

OpenFeign中http client 如果不做特殊配置,OpenFeign默认使用JDK自带的HttpURLConnection发送HTTP请求, 由于默认HttpURLConnection没有连接池、性能和效率比较低。所以修改为Apache HttpClient 5。 总结为两步: 加依赖改yml 具体操作请往…

GORM数据库连接池对接Prometheus

一、背景与介绍 Golang的database/sql包定了关于操作数据库的相关接口,但是没有去做对应数据库的实现。这些实现是预留给开发者或者对应厂商进行实现的。 其中让我比较关注的是Golang的sql包有没有实现连接池pool的机制呢? 毕竟Golang是静态语言,类似J…

P6242 【模板】线段树 3(区间最值操作、区间历史最值)

【模板】线段树 3&#xff08;区间最值操作、区间历史最值&#xff09; - 洛谷 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc.h> using namespace std; #define ll long long #define endl "\n" #define PII pair<int,int> #define int long lon…

platformd device、driver注册过程

本文以smsc911x驱动为例 platform_device注册过程 该设备被定义在dts里面了 参考文章设备树节点转换为设备节点device_node、和平台设备资源platform_device_设备树节点转换成平台设备-CSDN博客 dts里面的节点会被转换为device_node和platform_device(并不是所有节点都会被转…

vi编辑器使用

说明&#xff1a;本文介绍vi编辑器使用&#xff1b; 介绍&基础使用 vi编辑器是linux操作系统中最常用的编辑器&#xff0c;使用vi或vim命令启动。vim是vi编辑器的增强版&#xff0c;大多数情况使用vi命令也会打开vim编辑器&#xff0c;为了方便介绍&#xff0c;以下均称v…

【数组】Leetcode 80. 删除有序数组中的重复项 II【中等】

删除有序数组中的重复项 II 其他算法导航栏 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在…

C#实战:图像清晰度增强介绍和案例实践

目录 一、图像清晰度增强介绍 二、开发流程 三、请求参数说明 四、输出参数说明