关于写这篇博客呢,是好多大小公司面试必问题,在这里写一下我对hashmap的理解
首先通俗来说,就是面试时的简略回答:
当我们往hashmap中put元素的时候,先根据key的hash值得到这个元素在数组中的位置(即下标),然后就可以把这个元素放到对应的位置中了。如果这个元素所在的位子上已经存放有其他元素了,那么在同一个位子上的元素将以链表的形式存放,新加入的放在链头,最先加入的放在链尾。从hashmap中get元素时,首先计算key的hashcode,找到数组中对应位置的某一元素,然后通过key的equals方法在对应位置的链表中找到需要的元素。
好了,我们来详细解读一下hashmap
1.先从结构入手
在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,hashmap也不例外。Hashmap实际上是一个数组和链表的结合体(在数据结构中,一般称之为“链表散列“)。结构如图:
从图中我们可以看到一个hashmap就是一个数组结构,当新建一个hashmap的时候,就会初始化一个数组。并且每个位置上的链表不只一个元素,那么hashmap的get效率将是最高的
hashmap的工作原理
最新推荐文章于 2024-06-12 16:53:50 发布