学习总结:
昨天刚结束了这次的考核任务,在学长面试的问题中也发现了自己的很多不足,对集合的源码还有一部分没掌握好。
最基本的fail-fast机制我竟然忘了,就是list集合检查异常的机制,有一个修改次数值modCount,如果在操作时发生modCount发生了改变就会抛出异常,这是list集合的一个保护机制。
还有hashmap的树的迁移,因为我看hashmap的时候没有看红黑树,就把红黑树的部分跳了过去,后来学了红黑树再去看源码把这部分给忘了。考核完我又了解了一下,发现跟链表的迁移差不多,也是分成了高链和低链,然后再根据节点数量看是转成红黑树还是从红黑树转为链表。
还有一个hashmap1.7和1.8插入的不同,1.7的hashmap采用的是头插法,1.8的hashmap采用的是尾插法。1.7的hashmap在多线程下容易形成循环链表,造成死循环。1.8的尾插法就解决了这个问题。