HashMap分为以下部分
table:是数组,用来标记顺序的
slot:是哈希槽,对应数组下标
bucket:是哈希桶,存储键值对(JDK8中加入红黑树,如果存储的链表长度大于8时,会将链表转化成红黑树进行存储)
HashMap存在的问题
1.数据丢失 在JDK7中并发赋值时会被覆盖
在源码中,需要把新添加的元素直接放在slot槽中,可以使新添加的元素在下次提取时更快的被访问到
例如:
table[bucketIndex]=new Entery<>(hash,key,value,e);
如果两个线程同时执行到第一处,其中一个线程会被后来的执行的线程所覆盖,从而造成对象化丢失。
2.新表被覆盖
3.已遍历区间再新增元素会丢失
4.迁移丢失:在迁移过程中,有并发时,next被前置成null



