HashMap中hash函数如何实现的? 对key的hashCode值进行hash操作,无符号右移十六位然后做异或运算 当两个hashCode值相等时会怎样? 会发生哈希碰撞。(hashmap中key不可重复)若key值内容相同,则替换旧的value,否则链接到链表后面。 链表长度超过8,数组长度超过64时,会转换成红黑树 何时发生hash碰撞;如何解决hash碰撞? 当两个元素的kay计算的哈希值相同时,会发生hash碰撞。 jdk1.7以前,使用链表解决碰撞。 jdk1.8以后,使用红黑树解决hash碰撞。 如果两个key的hashCode值相同,如何存储键值对? hashCode值相同的话,通过equals方法,对比内容是否相同。 若相同,新的value值覆盖旧value值,且返回旧value值 若不相同,将新的键值对,添加到链表中 Q.E.D.