面试被问到,空口无言,今天看了几篇博客,有了初步了解,打算记录一下。
HashMap底层是由数组+链表实现的, 数组的特点是查询快,增删慢,链表的特点是查询慢,增删快(详见:数组和链表区别
HashMap底层结构如下图:
HashMap原理(先大概了解一下,过段时间再学习)
数组的每个元素都可以是链表的头。
插入元素
因为每个元素都是entry<k,v>形式,在hash表中是根据对象hashcode值确定其位置的,所以当插入时,需要先根据key的hashcode值找到在索引中的位置,如果该位置已经有元素,用equals方法必较两个元素的key,如果返回true,则新元素将覆盖旧元素的value值,如果返回false,则新元素与旧元素一起构成链表,并且,新元素处于链表头部。
读取元素
同样的,读取元素也需要先根据元素的key,找到其在数组中的位置,然后通过equals方法在链表中比对key,返回true,即找到元素

相关文章:

  • 2022-01-09
  • 2022-12-23
  • 2021-07-23
  • 2021-05-14
  • 2021-11-24
  • 2021-07-26
  • 2021-07-25
  • 2021-04-21
猜你喜欢
  • 2021-06-10
  • 2022-01-12
  • 2022-02-03
  • 2021-09-21
  • 2021-09-12
  • 2021-05-30
相关资源
相似解决方案