首页 > 其他分享 >HashMap的扩容机制

HashMap的扩容机制

时间:2024-11-25 20:34:13浏览次数:6  
标签:扩容 判断 hash HashMap 容量 链表 数组 红黑树 机制

初始化数组的流程

首先会判断旧容量是否大于0,如果不大于,则会给一个默认的容量16新建一个数组

扩容流程

首先判断旧容量是否大于0,如果不是初始化,这边一般都是为true,然后再计算新容量,新容量为旧容量的两倍,然后再新建一个数组,之后再遍历旧数组,判断e.next==null这个是判断当前这个数组索引位处是否是单个结点,就是判断这个结点的后一个结点是否存在,如果不存在则为单个数据,直接重新计算hash值放入新数组,如果不是单个数据,则判断是否是红黑树,如果是红黑树,则执行红黑树的添加流程,如果不是红黑树,说明是链表,则先遍历链表,然后判断e.hash&oldCap==0,这个是拆分链表,为了让hash数组更平均,减少hash冲突,如果满足这个条件,则数组下标不变,如果不满足则会平移一个旧数组容量长度

标签:扩容,判断,hash,HashMap,容量,链表,数组,红黑树,机制
From: https://blog.csdn.net/wbsdh/article/details/144037752

相关文章

  • 数据交换事前、事中、事后全流程安全机制,三方发力让安全落地!
    数据交换安全对于企业的重要性不言而喻。它不仅关系到企业核心资产和商业机密安全,还影响企业合规、客户信任、业务创新及企业品牌价值等多个方面。因此,越来越多的企业高度重视数据交换安全保护,力求构筑牢固的安全基础,为长远发展开拓空间。飞驰云联基于企业对数据交换安全的客观需......
  • 驱动开发系列28 - Linux Graphics DRM代码分析 - 内部机制
    一:概述       本文介绍DRM的内部机制,这些特性与驱动程序作者和为现有驱动程序添加新功能的开发人员息息相关。       首先,我们将介绍一些典型的驱动程序初始化要求,如设置命令缓冲区,创建初始化输出配置和初始化核心服务。随后将更详细介绍核心内部结构,并提供......
  • ESP32学习笔记_Bluetooth(1)——蓝牙技术与 BLE 通信机制简介
    摘要(FromAI):这篇笔记详细讲解了蓝牙技术的分类、核心架构和通信流程,重点介绍了低功耗蓝牙(BLE)的协议栈、角色划分及连接机制,结合拓扑示例清晰阐述了蓝牙网络配置和操作过程前言:本文档是本人在《ESP32-C3物联网工程开发实战(乐鑫科技著)》进行学习时所做的学习笔记,可能存......
  • MySQL原理简介—5.存储模型和数据读写机制
    大纲1.为什么不能直接更新磁盘上的数据2.为什么要引入数据页的概念3.一行数据在磁盘上是如何存储的4.一行数据中的NULL值是如何处理的5.一行数据的数据头存储的是什么6.一行数据的真实数据如何存储7.数据在物理存储时的行溢出和溢出页8.数据页的物理存储结构9.表空间的物......
  • Java同步机制深度解析: synchronized vs ReentrantLock
    目录1.引言2.synchronized关键字2.1基本用法2.2实现原理2.2.1Java对象头2.2.2Monitor对象2.3锁升级过程2.4锁消除和锁粗化2.5自旋锁与自适应自旋锁2.6synchronized的特性3.ReentrantLock3.1基本用法3.2实现原理3.2.1AQS的核心思想3.2.2ReentrantLock的......
  • 遍历 hashmap 的三种方式
    1.使用entrySet()遍历HashMap1.1概述entrySet()方法返回HashMap中所有键值对的集合。每个键值对被封装成一个Map.Entry对象。使用entrySet()可以方便地同时获取键和值,是最常用的遍历HashMap的方式之一。1.2示例代码以下是使用entrySet()遍历HashMap......
  • ConcurrentHashmap 锁
    1.ConcurrentHashMap的基本原理1.1ConcurrentHashMap的结构ConcurrentHashMap是一种线程安全的哈希表。它通过将数据分成多个段(在Java8之前)或桶(Java8之后),使得多个线程可以并发地访问不同的部分,从而减少了锁争用,提高了并发性能。Java7及之前的实现:Concurrent......
  • 大模型学习笔记:attention 机制
    UnderstandingQuery,Key,ValueinTransformersandLLMsThisself-attentionprocessisatthecoreofwhatmakestransformerssopowerful.Theyalloweveryword(ortoken)todynamicallyadjustitsimportancebasedonthesurroundingcontext,leadingt......
  • TCP可靠机制详解
    重传机制针对数据包丢失的情况,会用重传机制解决。超时重传在发送数据时,设定一个定时器,当超过指定的时间后,没有收到对方的ACK确认应答报文,就会重发该数据,也就是我们常说的超时重传。TCP会在以下两种情况发生超时重传:数据包丢失,确认应答丢失缺点:当超时时间RTO较大时,重发......
  • 【技术分析】UniV3 Pool 对 burnable 漏洞代币的防护机制
    代币漏洞攻击者可以通过transferFrom函数burn任意账户的Vul代币。因为本问涉及的漏洞可导致用户资产损失,所以不提供代币和Pool的地址,代币名称用Vul代币代替。利用方式在V2Pool场景下,针对burnable漏洞的利用方式购买少量Vul代币burn掉大量V2Pool中......