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)
  •  

     

 

posted on   Love&Share  阅读(342)  评论(0编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示