关于hashmap不得不提
总结什么的就不了,都太多了,不过很多都不太严谨或者不太准确,以当中的一些点提出说一下。只相信源码。
- 桶数组长度取2的次方的直接原因:将取模运算优化为做和length-1的与运算,并在此情况下,因为length-1二进制位全为1,求index的结果会等同于hashcode的后n位,也就是可以认为,只要hashcode本身是均匀的,那么hash算法结果也是均匀的。 要点:不是为了减少碰撞把长度取为2的次方,而是如果要用与运算,一定要是2的n次方,如果是为了减少碰撞,那么取素数才是最有效的。这里主要是运算的优化
关于JDK1.7put头插法,扩容头插法,1.8put尾插法,扩容头插法,也没几个说明白,博客什么的都好像差不多(你懂得),尾插法可以让resize后链表不发生反转,真的是这样吗?看过源码后,原来都在瞎xx说。(链表反转不会对链表产