HashMap数据结构分析

基本结构:

数组+单向链表

元素:

Node,包含key value Node(next)

基本限制

数组默认长度:1<<4 即 16
数组最大值 :1<<30
默认加载因子:0.75 ------ 数组容量*0.75 = 12 (使用大小触发点:使用到12时做扩大数组容量的操作)
链表变形为红黑树的触发大小:8 -------- :变形目的是降低查找的时间复杂度。
红黑树变形为链表的触发大小:6

添加元素的方式

先存数组,如果重叠则往下存成链表
1.计算出在数组的位置
目的:得到0-15的某个值,方式:哈希算法,通过key的hashCode取数组大小的模-------key.hashCode()%数组大小=下标值(即数组位置)

源码中的具体细节

1.如果为空则resize() 初始化
2.根据hash进行运算,
3.node中的hash记录

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 4,306评论 0 16
  • 开放二胎已经一年多,身边的朋友、同事有的怀孕几个月了,有的怀上又流产了,有的努力了一年到现在也没怀上。看着她们...
    罗茵琪阅读 631评论 7 9
  • 说好的身轻如燕呢?血汗铸就,一点不为过。语言总是苍白无力的,表达不出那种感觉,那种感觉文字表达不出,所以,任何事,...
    纵情嬉戏天地间阅读 191评论 0 0