HashMap底层逻辑理解(数组+链表+红黑树)

news2024/9/22 19:27:56
  • jdk1.7底层是由数组+链表实现
  • jdk1.8底层是由数组+链表+红黑树实现

以下都是数组+链表+红黑树对应的描述:

public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<>();
        
        map.put("Aa", "Value1");
        map.put("BB", "Value2");

        System.out.println("Aa".hashCode()); // 输出: 2112
        System.out.println("BB".hashCode()); // 输出: 2112

        System.out.println(map.get("Aa")); // 输出: Value1
        System.out.println(map.get("BB")); // 输出: Value2
    }
  • HashMap 中存入 "Aa""BB" 这两个键时,由于它们的 hashCode 相同,它们会被存储在 HashMap 数组的同一个下标位置。
  • 由于它们具有相同的哈希值,它们会被存储在同一个桶(bucket)中,并在该桶中的链表或红黑树中进行存储和管理。
  • 链表如果过长查询效率又过于低下,这时又转化出了红黑树,而转化的条件是链表的长度大于8,数组的长度大于64就会自动转化出红黑树。

这也是HashMap在遇到哈希冲突时的处理方式,保证了即使在哈希冲突发生的情况下,键值对依然能够正确存取。 

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

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

相关文章

捷邻系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;商品分类管理&#xff0c;商品信息管理&#xff0c;促销产品管理&#xff0c;订单管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;商品信息&#…

如何处理海量数据

目录 1.海量数据简介 海量数据的产生 海量数据的处理 2.利用位图解决 题目一 题目二 题目三 题目一变形 3.利用布隆过滤器解决 题目一 4.哈希切割解决 题目一 题目二 5.海量数据处理总结 1.海量数据简介 海量数据的产生 随着互联网的迅速发展&#xff0c;互联…

堆排、快速排序、归并排序等总结

十大经典排序算法大梳理 (动图代码)&#xff08;动态图参考&#xff09; 排序算法平均时间复杂度最差时间复杂度空间复杂度数据对象稳定性冒泡排序O(n2)O(n2)O(1)稳定选择排序O(n2)O(n2)O(1)数组不稳定、链表稳定插入排序O(n2)O(n2)O(1)稳定快速排序O(n*log2n)O(n2)O(log2n)不…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《省间中长期市场连续运营下考虑耦合安全约束的电力交易联合优化出清模型》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

Docker笔记-Docker容器使用

Docker笔记-Docker容器使用 1、Docker 客户端 docker 客户端非常简单&#xff0c;我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。 $ docker可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。 例如我们要查看 docker sta…

用vs附加运行的软件并打断点

需求&#xff1a;给一个代码文件A的第n行打断点。 前提&#xff1a;目标软件已经build完成。并且生成了对应的pdb文件P。 0 将要打断点的代码&#xff0c;所在生成的pdb文件放到exe相同目录下。 1 运行程序。 2 打开vs&#xff0c;并打开文件A。并在n行打上断点。&#xff…

视觉SLAMch4——李群和李代数

一、李群和李代数在SLAM中的定位&#xff08;如何解决SLAM中的问题&#xff09; 在视觉SLAM中&#xff0c;我们的目标之一是估计传感器&#xff08;通常是摄像头&#xff09;在每一时刻的位置和姿态。为了量化估计的好坏&#xff0c;我们需要定义一个误差函数&#xff0c;该函数…

Apache Arrow简介

是什么&#xff1f; (1) Apache Arrow是内存分析开发平台&#xff0c;是Apache的顶级项目。 (2) Apache Arrow是一个开源的跨平台数据层开发框架&#xff0c;主要提供高效的、硬件加速的、内存中数据计算的能力。Apache Arrow的设计初衷是作为“新一代大数据系统的共享基础”&a…

3.5 算术运算指令

&#x1f393; 微机原理考点专栏&#xff08;通篇免费&#xff09; 欢迎来到我的微机原理专栏&#xff01;我将帮助你在最短时间内掌握微机原理的核心内容&#xff0c;为你的考研或期末考试保驾护航。 为什么选择我的视频&#xff1f; 全程考点讲解&#xff1a;每一节视频都…

11、Django Admin启用对计算字段的过滤

重新定义admin.py中的Hero管理模型如下&#xff1a; admin.register(Hero) class HeroAdmin(admin.ModelAdmin):list_display ("name", "is_immortal", "category", "origin", "is_very_benevolent")list_filter ("…

(第四十天)配置完整的考试系统,完成前端和后端并优化,mysql后端,nginx前端,java连接

回顾 1 、使用 harbor 仓库 python --version yum -y update yum -y install python2-pip pip install --upgrade pip 20 .3 -i ....... pip install docker-compose -i ....... sh docker.sh 解压 harbor vim harbor.yml ./prepare ./installed 使用…

智慧储能柜构造揭秘:安科瑞2000ES解决方案打造智慧储能大脑

随着全球能源结构的转型和可再生能源的快速发展&#xff0c;储能技术成为调节能源供需、提高能源利用效率的关键。储能柜作为储能技术的核心组成部分&#xff0c;其构造和功能显得尤为重要。本文将为您详细解析储能柜的构造&#xff0c;并展示其如何成为高效能源管理的智慧核心…

ArcGIS Pro高级技巧:制作带地类编码文字的用地图例

欢迎关注同名微信公众号&#xff0c;更多文章推送&#xff1a; 01 需求分析 这个方法由群友【Erik】提供。 很有意思&#xff0c;看到最后一定会帮你打开思路。 直接上图比较&#xff0c;这是一般情况下简单的用地图例&#xff0c;只有色块&#xff1a; 下面这个是我们想要…

4、Django Admin对自定义的计算字段进行排序

通常&#xff0c;Django会为模型属性字段&#xff0c;自动添加排序功能。当你添加计算字段时&#xff0c;Django不知道如何执行order_by&#xff0c;因此它不会在该字段上添加排序功能。 如果要在计算字段上添加排序&#xff0c;则必须告诉Django需要排序的内容。你可以通过在…

有了这款AI代码神器Coursor,学习Rust不再是难题!

大家好&#xff0c;我是渔夫。 工欲善其事&#xff0c;必先利其器。AI 是未来十年生产力的核心工具&#xff0c;要让 AI 真正转化为生产力&#xff0c;而不仅仅是围观一时的热潮。 今天来聊聊最近又火爆AI圈的AI代码神器 Cursor&#xff0c;它其实是一款 VS Code 的一个分支&am…

在C#中使用Redis

NoSql NoSql概念 NoSQL&#xff0c;泛指非关系型的数据库。随着互联网web2.0网站的兴起&#xff0c; 历史中—中国的网站----马云--- 中国黄页&#xff0c;只能展示&#xff1b;用户只能看到 传统的关系数据库在处理web2.0网站&#xff08;可以看&#xff0c;也可以做到写&am…

华为云CCE集群创建loadBalancer

目录 一、目的 二、创建应用 三、创建服务 loadBalancer 四、域名解析 五、验证 一、目的 1、为CCE容器应用创建loadBalancer服务&#xff0c;并且绑定https协议的域名 2、公网访问域名: https://test.******.com 3、CCE创建用于公网域名访问的loadBalancer&#xff0c;不…

IAR9.X printf串口重定向方法,或提示Linker Error: “no definition for __write“的解决方案

一、问题现象&#xff1a; 1、Error[Li005]:no definition for"__write" [referenced from flush.o(dl7M_tlf.a)] 2、串口重映射代码没问题&#xff0c;但是串口工具接收不到数据 3、复现环境&#xff1a;IAR9.40.1 二、操作方法: 1、[工程项目]->[Options]…

【负载均衡式在线OJ】Compile_server 模块

文章目录 程序源码compile_server整体思路编译(compile.hpp)运行模块编译运行模块编译运行服务 程序源码 https://gitee.com/not-a-stupid-child/online-judge compile_server 整体思路 这个服务要对oj_server 发送过来的代码进行编译和运行&#xff0c;最后把结果返回给oj…

理想二极管

原理图 mos管选型 参考链接 很实用&#xff01;用MOS管制作一个理想中的二极管_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Xi421r7K8/?spm_id_from333.1007.tianma.2-1-4.click&vd_sourcee821a225c7ba4a7b85e5aa6d013ac92e 特此记录 anlog 2024年9月3日