深度了解Java集合------------HashMap的实现原理

版权声明:本文为changeyd原创文章,未经changeyd允许不得转载。谢谢合作 https://blog.csdn.net/qq_40223688/article/details/87915245

按照惯例,我们先简单介绍一下今天所说的集合实例:HashMap

HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并且允许存储null形式的Key和Value。此实例不保证所映射的顺序,特别是不能保证该顺序一直不变。

二、那么接下来我们说一下HashMap的数据结构及底层原理

在Java编程语言中,最基本的结构就是两种,一种是数组,另外一种是模拟指针(引用);也可说成顺序存储和链式存储,几乎所有的数据结构都可以用这两个基本结构来构造的,HashMap可以称为一个链表散列的数据结构,及数组和链表的共同结构。

HashMap底层就是一个数组结构,数组中的每一项又是一个链表。当新建一个HashMap的时候,就会初始化一个数组。而对于其中Entry就是其中数组的元素单位,每个Map.Entry其实就是一个Key-Value对结构,它持有一个指向下一个元素的应用,这也构成了链表结构。

对于其中王HashMap中新增元素(put),它实现原理是先根据键的hashCode重新计算hash值,根据hash值来得到这个元素在数组中的下标位置,如果此位置已经存在其他元素,那么在这个下标位置上的元素将以链式链表结构存放,先将先新增的元素添加,然后将其他后面的元素后移;如果没有元素,那么直接放在该下标位置上。那么其他的改查操作就是配置数组和链表的结构属性来进行相应操作原理。

猜你喜欢

转载自blog.csdn.net/qq_40223688/article/details/87915245