1 结构区别:HashMap1.8的底层数据结构是数组+链表+红黑树。HashMap 1.7的底层数据结构是数组加链表。
2 扩容的区别:
Jdk1.7:头插法,添加前先判断扩容,当前准备插入的位置不为空并且容量大于等于阈值才进行扩容,是两个条件!
扩容后可能会重新计算hash值。
Jdk1.8:尾插法,初始化时,添加节点结束之后和判断树化的时候都会去判断扩容。我们添加节点结束之后只要size大于阈值,就一定会扩容,是一个条件。
由于hash是final修饰,通过e.hash & oldCap==0来判断新插入的位置是否为原位置。
帖子还没人回复快来抢沙发