- HashMap的底层原理
HashMap底层是数组+链表或者是数组+红黑树,当我们向HashMap中put元素的时候,先根据key的hashcode重新计算hash值,根据hash值得到这个元素在数组中的位置(即下标),如果数组在该位置上已经存放有其他元素了,那么在这个位置上的元素将以链表的形式存放,新加入的放在链头,最先加入的放在尾,如果链表的长度超过8,则将链表转换成红黑树。如果数组该位置上没有元素,就直接将元素放到此数组中的该位置上。当系统决定存储HashMap中的key-value对时,完全没有考虑Entry中的value,仅仅只是根据key来计算并决定每个Entry的存储位置。我们完全可以把Map集合中的value当成key的附属,当系统决定了key的存储位置之后,value随之保存在那里即可。当我们get元素的时候,同样根据key的hashcode计算的hash值得到元素的存储位置,然后调用key的equals方法与该位置的元素进行比较,如果为true则直接返回,否则如果此位置是一个链表类型,则从链表中查找元素返回,否则如果此位置是一个树节点,则从二叉树中查找元素返回,如果都不满足,则返回null。
来源:CSDN
作者:Betty_betty_betty
链接:https://blog.csdn.net/Betty_betty_betty/article/details/103699162