HashMap原理简述

1.HashMap中有一个叫做Entry的内部类,包含key value两个变量,初始化有一个长度16的table数组,储存entry对象

2.调用put方法的时候,根据key计算hash值和table数组的长度,调用indexFor(hash,table.length)方法获得索引,存到table数组对应位置,如果hash值重复,则以链表linkedlist形式储存在同一个索引

3.get的时候,根据key的hash值计算索引,找到数组对应位置,如果有多个,就调用key的equals方法,返回true则返回value,没有返回null

一些关键点:

  • HashMap有一个叫做Entry的内部类,它用来存储key-value对。
  • 上面的Entry对象是存储在一个叫做table的Entry数组中。
  • table的索引在逻辑上叫做“桶”(bucket),它存储了链表的第一个元素。
  • key的hashcode()方法用来找到Entry对象所在的桶。
  • 如果两个key有相同的hash值,他们会被放在table数组的同一个桶里面。
  • key的equals()方法用来确保key的唯一性。
  • value对象的equals()和hashcode()方法根本一点用也没有。

猜你喜欢

转载自blog.csdn.net/weixin_39270764/article/details/80264006
今日推荐