HashMap实现原理

来源:互联网 发布:苏轼 文言文徙知 编辑:程序博客网 时间:2024/06/06 00:57

一、简单用文字来叙述HashMap实现原理

  1. HashMap是采用Hash表的结构,通过拉链法和再哈希法来处理hash冲突的。
  2. HashMap里面实现了一个静态内部类Entry,它有4个参数hash、key、value和next。HashMap实际上就是一个entry数组。
  3. 首先,我们通过key.hashCode()来获得key的hashcode,并与entry数组的长度取模得到该key-value所组成的entryX所在的下标index。
  4. 接着,我们判断该index下的链表中是否已经存在该key。若存在,则将其value值进行替换;若不存在,则将该entryX放置在该index,并使其next指向原entry对象。
  5. 如果遇到null键,将其放置在该数组的第一位,做法同上。
  6. 如果该数组中的容量超过默认容量时,则扩大表容量为旧表的2倍(最大值为Integer,MAX_VALUE),同时将旧表的内容映射到新表中(再哈希法)。
  7. JDK7用的是链表,JDK8在数据长度达到某个阙值的时候,转而用红黑树来存储。
二、参考博客

HashMap实现原理
jdk7和jdk8的HashMap的实现


原创粉丝点击