结论:
1)HashSet底层是HashMap,第一次添加时,table数组扩容到16,临界值(threshold)是 16*加载因子(loadFactor)是0.75=12
2)如果table数组使用到了临界值12,就会扩容到16*2=32,新的临界值是32*0.75=24,依次类推(每加一个结点size就加1,加的这个结点可以在同一个链表上也可以是其它链表,只要加了,size就会++,达到12,扩容)
3)在java8中,如果一条链表的元素个数到达TREEIFY_THRESHOLD(默认是8),并且table的大小 >= MIN_TREEIFY_CAPCITY(默认是64),就会进行树化(红黑树),否则仍然采用数组扩容机制
断点调试说明:
在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试,调试过程中可以看到各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下。进行分析找到这个bug
断点调试的快捷键:
F7(跳入)F8(跳过) shift + F8(跳出) F9(resume,执行到下一个断点)
F7:跳入方法内
F8:逐行执行代码
shift+F8:跳出方法
如果f7进不去:
- 1)可以alt+shift+F7强制进入
- 2)