Map
首先判断数组 是否为null
判断key是否为null
用key 去计算key的hash值,通过key的hash值和数组长度 indexFor --> 计算出来索引i
遍历当前所找到的这个索引i 上边的元素, 去判断当前元素和存入的元素之间的hashCode 和eqauls 值是否相等,如果相等--> key 不变,value 覆盖
出了if ,addEntry 将 key ,value ,hash, i 传入
进行一个对应的集合扩容判断 --> createEntry 方法 key ,value ,hash, i 传入
将索引i 处的索引进行赋值 --> new Entry ,并将赋值的结果作为参数传递到new Entry中,new Entry 用 entry next 接受该参数, new Entry 就指向了数组上的那个元素,接着,将new Entry 赋值给 数组table[i] 完事!
链表 【】 对象 = new[] 链表
比如hash冲突算法
hashMap 和hashTable
hashTable 和hashMap的区别
1. 线程问题
2.null值null键
3.版本问题
hashTable 同步锁
|
|