问题:
1.java8以后链表长度超过8会转为红黑树,当删除后长度效益8会转为链表。这个我知道,但是hashmap是使用Node[] table来存储node,那么问题就来了,什么情况下元素存储在table中,什么情况下转为链表存储。是不是发生了hash碰撞才会转为链表存储,但是一个hashmap发生hash碰撞的概率小之又小,这样利用率太低了,发生红黑树的转换我感觉几乎不可能存在(应为转为红黑树的前提是发生8次hash碰撞,除非恶意改写hashcode生成函数),那如果没有发生hash冲突,是不是都存储在数组中的?
2.当发生hash碰撞时,元素存储在链表中,通过key get出来的value按理说会有多个啊,怎么取得出来。
3.hashmap的检索速度是o(1),怎么通过hashcode迅速定位到该node的
可以只回答其中一个问题,我主要是想弄明白第一个问题!