【Java笔记】HashMap-CSDN博客

59 阅读1分钟

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 红黑树 → 链表;




待完善。。。。。