问题1:1.7和1.8各自如何让链表数据散列的更均匀,即如何重新计算hash值
问题2:如何获取新加元素在数组中的下标,用什么方法实现?
问题3:在扩容方面,一般情况下数据量大于当前容量*填装因子时,会采取扩容。jdk1.7有什么额外的判断?例如key从1-100,初始容量为16,为何key在12的时候没有去扩容,等于17的时候才去进行扩容。第二次扩容是在什么时候?前两次扩容有什么区别?
问题4:扩容后重新计算下标时,jdk1.8针对1.7做了什么优化?
问题5:发生hash冲突后,新的元素是怎样添加进链表中,链表的开头还是结尾?
问题6:jdk1.8中,当单个链表的长度大于8时会尝试进行链表转红黑树的操作,实际上优先进行什么操作?
问题7:jdk1.8中,当数据量小于多少时,会将红黑树重转成链表?
问题8:size有可能比capacity大吗?
问题9:jdk1.8中,阐述链表结构rehash的逻辑。