HashMap插入元素的过程:
1 首先计算key的hash值,然后根据table的长度进行取模,找到自己的index位置。
2 如果table[index]位置上没有其他元素,则直接插入,否则就发生了hash冲突。
hashmap解决hash冲突是采用链地址法,也就是说,当发生hash冲突后,会
遍历链表中每个元素,调用equals方法进行比较,如果相等则将旧的value替换为新的 value,如果遍历结束后,都没有相等的,则在链表头部插入。
问题来了,为什么要在链表头部插入呢?网上说是避免尾部遍历。。但是真的存在避免尾部遍历么?因为在插入元素时,会调用equals方法和每个元素进行比较,少不了遍历的过程,完全可以在遍历结束后在尾部进行插入,并不会多出额外的时间复杂度。
求大神解答啊。。谢谢啦