HashMap知识点梳理、常见面试题和源码分析

  本博客是包括HashMap在内的相关知识点博文链接的入口,从介绍哈希表的基本概念开始,到HashMap的应用、实现原理和常见面试题,包括分析其源码,还包括相关知识点的延伸,例如HashSet等。

  为什么深入分析HashMap等哈希表数据结构?答:原因包括如下三点,其一它是一个重要技能点,是Java程序员使用频率最高的、用于映射(键值对)处理的数据结构;其二它是一个异常重要的面试点,不管是大企业还是小企业,尤其是 BAT;其三它是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表。

  本文基于Java 17进行分析,相关文章链接如下:

  1. 哈希表HashMap和哈希函数介绍
  2. HashMap之装载因子
  3. 解决哈希冲突的常用方法之开放寻址法
  4. 哈希函数的常用构造方法
  5. HashMap的数据结构和源码分析
  6. HashMap put方法源码解析|Java 13
  7. HashMap get和resize源码解析|Java 13
  8. Java遍历Map对象的常见方法
  9. Set的五种遍历方式
  10. HashMap和Hashtable的区别
  11. Java 17 java.util.HashSet 类源码分析
  12. HashMap如何计算初始化容量,最大容量是多少
  13. Java HashMap和 ConcurrentHashMap 热门面试题

Java 17中HashMap的数据结构

  图中,Node[0]-Node[15]即代表哈希数组,也叫做“位桶”,数组的每个元素都是一个单链表或者红黑树的头节点,链表或者红黑树是用来解决冲突的,如果不同的key映射到了数组的同一位置处,就将其放入链表或者红黑树中。

  HashMap是我们经常用的的一个集合类,其中java对于Hash散列表的维护、扩容以及解决Hash冲突的方法充满了哲学和智慧的光芒,值得我们借鉴。如何更好地使用HashMap,建议大家把JAVA API文档拿来读读,其中对于如何很好的使用HashMap做了详细的说明,希望你将HashMap的源代码自行分析一遍。

  问渠那得清如许,绝知此事要躬行!若想封神,请从阅读源码开始。

  如果没有发现美的眼睛,走遍世界,累的只是自己的脚,心却丝毫没有愉悦。

posted @ 2022-03-06 08:18  楼兰胡杨  阅读(39)  评论(0编辑  收藏  举报