你们好,最近小时发现有诸多的小伙伴们对于hashmap底层实现原理,hashmap这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、 什么是HashMap?
2、 1.实现了一个基于哈希表的Map接口,存储的对象是一个键值对对象(Entryk,V);
3、 2.基于数组和链表的实现,内部维护一个数组表,保存每个链表的头节点;搜索时,先用哈希函数计算key的哈希值,再根据key的哈希值计算数组索引(余数法)。
4、 然后根据索引找到链表的头节点,再遍历找到链表;
5、 HashMap数据结构
6、 1.画一个示意图,如下图。左边的数组索引是根据key的哈希值计算的,不同的哈希值可能会产生相同的索引,也就是哈希冲突。此时采用链地址法处理哈希冲突,即所有索引一致的节点组成一个链表;
7、 HashMap继承的类和实现之间的接口
8、 1.HashMap接口示意图:如下图。
9、 2、Map接口,方法的意思很简单,基本上只看方法的名字就可以了,后面的HashMap源代码分析会详细讲解。
10、 3.AbstractMap抽象类中定义的方法。
以上就是hashmap这篇文章的一些介绍,希望对大家有所帮助。