一.链表
1.创建链表对象,链表通常包含键Key,值Value和下一个链表对象的引用
2.链表的使用
3.链表的数据遍历和修改
直接通过循环遍历,可以查看整个链表的数据
修改链表某个节点的值
二.HashMap的一些理解(不包含红黑树)
1.数据结构
hashMap的最上层为一个数组结构,数组中保存的数据为链表,例如数据tab[],此数据的tab[1]=node1,如果向数组中放入node2,此时数据可以存储为node1.nextNode=node2
2.代码简单模拟hashMap添加获取数据
创建HashMap的链表对象
创建map对象
map对象中table数组的大小为1,真正的hashMap中此为动态扩充,初始大小默认为16的数组
简单使用
修改代码为可设置数组大小
同时我们可以根据key的hash判断数据存放在tab数组中的位置来查询数据
我们使用简单数据进行测试,debug查看下数据存放情况
3 table[k.hash()&[n-1]] 是什么意思?
k.hash()是根据哈希算法得到键key的哈希值,此为一个int类型的值
&(与运算)符号为位相与运算符,根据二进制数进行与的运算操作
n代表数组的大小,此处hashmap的数组大小可以为8,16,32...
根据此表达式的运算,计算出此数据在数组中存放的位置
此处我们举例计算下