首页 > 其他分享 >HashMap put流程

HashMap put流程

时间:2024-05-16 22:21:46浏览次数:30  
标签:判断 HashMap 流程 链表 键值 key put table null

  1. 判断键值对数组table是否为空或为null,否则执行resize()进行扩容(初始化)。
  2. 根据键值key计算hash值得到数组索引。
  3. 判断table[i]==null,条件成立,直接新建节点添加。
  4. 如果table[i]==null,不成立
    • 判断table[i]的首个元素是否和key一样,如果相同直接覆盖value
    • 判断table[i]是否为treeNode,即table[i]是否是红黑树,如果是红黑树,则直接在树中插入键值对。
    • 遍历table[i],链表的尾部插入数据,然后判断链表长度是否大于8,大于8的话把链表转换为红黑树,在红黑树中执行插入操作,遍历过程中若发现key已经存在,直接覆盖value。
  5. 插入成功后,判断实际存在的键值对数量size是否超多了最大容量threshold(数组长度*0.75),如果超过,进行扩容。

标签:判断,HashMap,流程,链表,键值,key,put,table,null
From: https://www.cnblogs.com/worshipone/p/18196854

相关文章

  • HashMap原理
    HashMap的实现原理底层使用hash表数据结构,即数组+(链表|红黑树)。添加数据时,计算key的值确定元素在数组中的下标,key相同则替换,不同则存入链表或红黑树中。获取数据通过key的hash计算数组下标获取元素。HashMap的JDK1.7和JDK1.8有什么区别JDK1.8之前采用的拉链法,数组+链表。J......
  • 开源快速开发平台:提质增效 加速实现流程化办公
    在科技的迅猛发展下,运用低代码技术平台、开源快速开发平台的优势特点,可以助力企业实现流程化办公、进入数字化转型新时代。随着社会的进步和发展,各行业的业务量都在明显上涨,如果还是采用传统的方式,明显跟不上时代发展步伐。想要实现提质增效的办公目的,可以了解低代码技术平台、开......
  • Linux安装JDK流程
    公司给的服务器上面啥都没有,自己动手吧,这种活属于是干一次以后都不管的首先检查Linux系统是多少位uname-m下载JDKLinux版本,打不开官网可以点下面去镜像网站=-=https://repo.huaweicloud.com/java/jdk/8u181-b13/下载之后传到服务器,前置准备两个软件Xftp(用来上传文件到)和X......
  • php 判断 if (empty($user->published_at) != empty($user_input['published_at']))
    这里的逻辑是:如果$user->published_at为空,并且$user_input['published_at']不为空,或者如果$user->published_at不为空,并且$user_input['published_at']为空,那么条件将成立。这种检查通常用于确定某个值是否发生了变化,特别是从无到有或从有到无的情况。假设您的意图......
  • C语言 while (putchar(getchar()) != '!') 解释
    ​ 代码运行到第4行,getchar()需要输入的数据,但是输入的缓冲区没有数据,所以就需要再命令行窗口(黑窗口)输入新的数据​ 这时候getchar()只需要输入1个字符的数据,但是你可以输入多个数据,打回车的时候之前输入的一行数据都会被发送到缓冲区,回车之前都还可以删除刚才输入的数据修改修......
  • 使用joinjs绘制流程图(九)-实战-绘制流程图+节点路径自定义升级版
    效果图自定义路径设计本示例假设当前节点和其他节点不在同一纵坐标的情况下代码<template><divclass="app"><divref="myholder"id="paper"></div></div></template><script>import*asjointfrom'@joint/......
  • Android系统启动流程
    在Android中系统的启动流程是一个经常会被问到的问题,那么下面我们通过一张图来说明一下 从上面的图片中可以看到它的一个启动流程.1.BootLoader首先,当我们点击电源开关后,引导芯片代码开始从预定义的地方(固化在ROM)开始执行。加载引导程序到RAM,然后执行,这时执行的就是B......
  • Nsight compute权限访问受阻问题
    在非root或sudoer用户下进行ncu命令分析cuda程序时,会报错RR_NVGPUCTRPERMTheuserrunning<tool_name/application_name>doesnothavepermissiontoaccessNVIDIAGPUPerformanceCountersonthetargetdevice.此时可以选择申请root权限或在docker内进行性能分析,目前还......
  • MapReduce流程
    MapReduce流程将文件上传到HDFS中,默认每128M切分为一个block块,MapReduce会对数据进行逻辑上的切片(split),并不是实际上的切分,默认与block块的大小一致为128M,根据split切分产生map任务,切片越多产生的map任务就越多,map默认每次读取一行数据,map阶段产生的数据会进入环形缓冲区中(基于......
  • HDFS写数据微观流程
    HDFS微观流程每个block块都被划分成多个大小为64k的paccket每个paccket中都有两个部分组成,一个是packetHeader,一个是packetDatapacketHeader存储一些变量值:pktlen:(packet总长度)、offsetInBlock:(记录当前packet在blocck中的位置)、seqNo:(在同一个block块中的唯一编号(序列号))la......