HashSet扩容成红黑树机制

结论:

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)
原文地址:https://www.cnblogs.com/YXBLOGXYY/p/14789379.html