JDK1.7????????????HashMap

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK1.7????????????HashMap相关的知识,希望对你有一定的参考价值。

?????????hashmap

??????????????????JDK1.7



??????????????????


HashMap?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

?????????put???get???remove?????????????????????????????????????????????HashMap??????????????????????????????

??????????????????

??????????????????

??????????????????

??????HashMap?????????????????????????????????????????????????????????????????????????????????????????????

???????????????put????????????


??????????????????

??????????????????

??????????????????

?????????????????????????????????????????????????????????????????????

???1???HashMap???key????????????null?????????key???null?????????????????????????????????0?????????

???2???????????????????????????key??????????????????????????????????????????????????????????????????????????????????????????????????????????????????PS???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????key????????????????????????????????????????????????????????????????????????????????????

???3???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????LRU?????????????????????????????????

??????????????????

(4)????????????????????????????????????

??????????????????

??????????????????

??????????????????

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????next?????????next????????????????????????????????????????????????????????????????????????????????????


????????????get??????

??????????????????

??????????????????

get?????????????????????

???1?????????key?????????????????????????????????????????????????????????????????????????????????????????????key????????????????????????????????????????????????null


?????????remove


????????????????????????????????????


??????????????????????????????

???1???????????????????????????????????????????????????key???????????????????????????????????????????????????????????????????????????????????????????????????NULL???????????????????????????next?????????????????????



HashMap?????????????????????????????????????????????????????????????????????

???1?????????????????????????????????

??????????????????

????????????????????????????????????????????????1??????key=A???value=aaa?????????2??????key=B???value=bbb???

??????i=1???????????????1???????????????table[1]=new Entry<>(1234, "A", "aaa", null);

????????????2???????????????table[1]=new Entry<>(1234, "B", "bbb", null);

??????????????????1?????????????????????????????????????????????????????????

???2???put?????????????????????????????????????????????????????????????????????????????????????????????????????????

????????????????????????????????????????????????????????????????????????

??????????????????


?????????????????????A???B?????????????????????A.next=B???B.next=null

??????????????????????????????

??????????????????

??????????????????????????????-1?????????-2????????????????????????????????????????????????????????????????????????????????????

?????????????????????????????????????????????????????????????????????-1?????????A???????????????????????????B????????????????????????Entry<K,V> next = e.next;??????????????????????????????????????????????????????-2???????????????????????????????????????????????????????????????????????????B.next=A???A.next=null

??????????????????

???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????-2???????????????????????????-1???????????????????????????????????????????????????-2???????????????????????????A???B???????????????????????????????????????????????????B?????????A????????????????????????-1?????????????????????


??????????????????-1?????????????????????

while(null != e) {

    Entry<,> next = e.;
    (rehash) {
        e.= == e.? : hash(e.);
    }
    i = (e., newCapacity);
    e.= newTable[i];
    newTable[i] = e;
    e = next;
}

???????????????????????????????????????

??????????????????

???????????????????????????????????????????????????????????????B-->A-->NULL

??????????????????e?????????A????????????null != e????????????????????????

??????????????????


????????????????????????

??????????????????

???????????????????????????

??????C???????????????C?????????A???B????????????????????????????????????????????????

??????????????????

???????????????A??????B?????????B?????????A?????????A?????????B?????????B?????????A?????????????????????????????????null????????????



??????????????????


??????????????????????????????hash?????????????????????????????????????????????????????????????????????

??????????????????

?????????

http://blog.csdn.net/zhuqiuhui/article/details/51849692

https://www.cnblogs.com/binyue/p/3726403.html

???????????? ?????????????????? ?????????????????????????????????http://5880861.blog.51cto.com/5870861/1984059

以上是关于JDK1.7????????????HashMap的主要内容,如果未能解决你的问题,请参考以下文章

JDK1.7中HashMap死环问题及JDK1.8中对HashMap的优化源码详解

JDK1.7&1.8源码对比分析集合HashMap

Jdk1.7下的HashMap源码分析

手写HashMap(基于JDK1.7)

手写HashMap(基于JDK1.7)

JDK1.7源码分析集合HashMap的死循环