HashMap

https://www.cnblogs.com/aobing/p/12014271.html

 HashMap是我们非常常用的数据结构,由数组和链表组合构成

大概如下,数组里面每个地方都存了Key-Value这样的实例,在Java7叫Entry在Java8中叫Node。

 

 因为他本身所有的位置都为null,在put插入的时候会根据key的hash去计算一个index值。

你提到了还有链表,为啥需要链表,链表又是怎么样子的呢?

我们都知道数组长度是有限的,在有限的长度里面我们使用哈希,哈希本身就存在概率性,就是”帅丙“和”丙帅“我们都去hash有一定的概率会一样,就像上面的情况我再次哈希”丙帅“极端情况也会hash到一个值上,那就形成了链表。

每一个节点都会保存自身的hash、key、value、以及下个节点,我看看Node的源码。

原文地址:https://www.cnblogs.com/ywsheng/p/12016418.html