【Java笔记】HashMap

HashMap


哈希表

核心: 基于哈希值的桶和链表

优点: 查询速度快,平均时间复杂度 O(1)

缺点: 哈希碰撞

Java 1.7 HashMap


实现: 数组+链表

初始化:

  • 容量参数 必须为 2的幂 (默认:16) ,否则会被转换为2的幂。

    为了length-1 的低位都为1,便于进行& 运算取出hash返回值的低位

  • 负载因子 默认 0.75f

扩容条件: 元素数量 >= 容量×负载因子 当前位置元素不为空

扩容倍率: 2倍

链表插入方式: 头插法

缺点: 容易发生死锁等

Java8 HashMap


实现: 数组+链表+红黑树

初始化:

首次调用 put 方法时创建数组

结构转换:

size >=8 链表 → 红黑树 数组 length>=64;

size <=6 红黑树 → 链表;




待完善。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nonoas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值