HashMap - 底层原理

HashMap - 底层原理

HashMap底层用的就是hash表数据结构,即数组和链表或红黑树

  1. 当我们向HashMap中Put元素时,利用key的hashCode重新hash计算出当前对象的元素在数组中的下标

  2. 存储时,如果出现hash值相同的key,会有2种情况

    1. 如果key相同,那么就会覆盖原数据
    2. 如果key不相同,就说明出现了冲突,则将当前的key-value放入链表或红黑树中。(链表的长度大于8数组的长度大于64,那么链表才会转换为红黑树)
  3. 获取数据时,直接找到对应的hash值对应下标,再进一步判断key是否相同,从而找到对应值,如果是链表就要遍历链表查,如果是红黑树就要到红黑树中查

HashMap的jdk1.7和jdk1.8有什么区别?

jdk1.8之前,采用的是 hash表 +数组+链表,来解决hash冲突的问题,并没有采用红黑树。

jdk1.8以后,采用了红黑树+链表的方式,当链表的长度大于8,数组的长度大于64的时候,就会采用红黑树来解决问题。

HashMap的底层原理

  1. 底层采用hash表数据结构 + 数组 + (链表或红黑树)

  2. 添加数据时,计算key的hash值,找到数组的下标

    1. 如果key相同替换原内容
    2. key不同,存入链表或红黑树
  3. 获取数据,计算key的hash值,获取元素

相关推荐
醇氧1 分钟前
【Windows】从守护到终结:解析一个 Java 服务的优雅停止脚本
java·开发语言·windows
努力发光的程序员1 分钟前
互联网大厂Java求职面试实录
java·jvm·线程池·多线程·hashmap·juc·arraylist
小鹿学程序6 分钟前
FileZilla连接到虚拟机
java·服务器·开发语言
Haooog12 分钟前
Docker面试题(不定时更新)
java·docker·面试
feathered-feathered22 分钟前
Redis基础知识+RDB+AOF(面试)
java·数据库·redis·分布式·后端·中间件·面试
毕设源码-赖学姐24 分钟前
【开题答辩全过程】以 高校排课系统的优化设计与实现为例,包含答辩的问题和答案
java·eclipse
q_191328469524 分钟前
基于SpringBoot2+Vue2的行业知识答题考试系统
java·vue.js·spring boot·mysql·毕业设计·计算机毕业设计·演示文稿
上78将25 分钟前
Java中既有编译执行又有解释执行,这个怎么理解?
java·开发语言
Mr_Xuhhh27 分钟前
JAVA期末重点
java·开发语言·python
a程序小傲35 分钟前
小红书Java面试被问:java创建对象有哪些方式?
java·开发语言·面试