查询已有链表的hashmap_关于链表与HashMap的一些理解

本文详细介绍了链表的创建、使用和遍历修改,以及HashMap的基本数据结构和工作原理。通过示例展示了HashMap如何存储和检索数据,解释了table[k.hash()&[n-1]]的计算过程,帮助读者深入理解这两种常用的数据结构。
摘要由CSDN通过智能技术生成

一.链表

1.创建链表对象,链表通常包含键Key,值Value和下一个链表对象的引用

链表对象

链表示意图

2.链表的使用

使用链表

3.链表的数据遍历和修改

直接通过循环遍历,可以查看整个链表的数据

从node1遍历链表

结果

修改链表某个节点的值

修改节点的值

结果

二.HashMap的一些理解(不包含红黑树)

1.数据结构

hashMap结构图

hashMap的最上层为一个数组结构,数组中保存的数据为链表,例如数据tab[],此数据的tab[1]=node1,如果向数组中放入node2,此时数据可以存储为node1.nextNode=node2

2.代码简单模拟hashMap添加获取数据

创建HashMap的链表对象

链表对象

创建map对象

map对象

查询数据方法

map对象中table数组的大小为1,真正的hashMap中此为动态扩充,初始大小默认为16的数组

简单使用

简单使用

数据结果

修改代码为可设置数组大小

可设置数组大小

根据hash值放入数组

同时我们可以根据key的hash判断数据存放在tab数组中的位置来查询数据

数据获取

我们使用简单数据进行测试,debug查看下数据存放情况

使用

数据存放情况

3 table[k.hash()&[n-1]] 是什么意思?

k.hash()是根据哈希算法得到键key的哈希值,此为一个int类型的值

&(与运算)符号为位相与运算符,根据二进制数进行与的运算操作

n代表数组的大小,此处hashmap的数组大小可以为8,16,32...

根据此表达式的运算,计算出此数据在数组中存放的位置

此处我们举例计算下

哈希与运算举例

源码解读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值