hashmap简要介绍

qq_35320071 2019-06-24 02:20:36
jdk版本是1.8,其他版本可能会有不一致。由于是手机端,所以不贴源码,建议参照源码学习。hashmap由数组+链表+红黑树组成。分为put,get,扩容机制三部分大致介绍: 一丶put 1.调用hash(key)计算出hash值,将所有参数传入putVal(参数省略)。 2.初始化判断。第一次table[]数组为空,也对table[]进行初始化。将容量设置为16或自定义长度。 3.根据hash值找到数组下标, 1) 若没有值,直接将Node初始化存入; 2) 若有值,判断该节点是红黑树节点还是链表节点,并将其存入。若是链表节点,是否有一样的key,有则覆盖,没有则插入链表最后,当链表长度等于8时,转为红黑树。 二丶扩容机制 扩容机制和初始化调用的都是resiz()函数,初始为16,每次扩容翻倍,并进行数据迁移。扩容机制有两个: 1.当数组长度大于阀值,即容量*0.75时,扩容; 2.当数组长度小于64,且链表长度大于8; (判断过程略) 三丶get 1.计算key的hash值,找到对应下标; 2.判断第一个节点是否是我们找的值,若不是,判断是红黑树节点还是链表,调用方法或遍历链表。 以上只是简要介绍,详细的请看源码解析。
...全文
14 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧