HashMap简述

HashMap是一种无序、key不重复的数据结构,允许key和value为null。其默认初始化大小为16,负载因子为0.75,当元素数量达到负载因子与数组大小的乘积时会扩容。在JDK1.8之前,HashMap基于数组+链表实现,之后引入红黑树,链表长度超过8且数组大小超过64时转为红黑树,长度小于6时退化回链表。

特点

        1.存取无序

        2.key不能重复

        3.key和value都允许为null

        4.可序列化,线程不安全

数据结构

        1.HashMap默认数组初始大小为16,默认负载因子为0.75

        负载因子是HashMap数组扩容的阈值最大比例,就是16 x 0.75 = 12 大于12后就会自动扩容

        2.jdk1.8之前是 数组 + 链表 实现,jdk1.8及其之后是 数组 + 链表 + 红黑树 实现

        jdk1.8之前创建HashMap时就会创建16位长度的数组,jdk1.8及其之后是在第一次put时才会创建数组

       3.当HashMap的某个链表长度大于阈值8并且数组长度大于等于64时就会将链表转化为红黑树

       红黑树长度小于6时就会退化为链表

        4.当HashMap的某个链表长度大于阈值8但是数组长度小于64时会触发数组扩容机制,重新调整并计算在数组中的位置,称为resize

         

       借鉴结构图列:        

         

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值