自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(2)
  • 收藏
  • 关注

原创 HashSet不考虑数组扩容的树化问题讨论

之前一篇文章提到了HashSet底层是HashMap。数据结构是数组加链表的形式。现在我们来讨论一下不考虑数组扩容问题向链表中加入数据元素到底在加入第几个元素后开始树化的问题。仍然先建一个这个类,保证这个类新创建的对象的hashCode值相同但是调用equals()方法比较却是不同的。实验代码改为这样:先创建一个hashSet,再利用for循环往里面添加64个元素,由于这64个元素的hashCode不同,所以计算出在数组中的下标也不相同。由下面图也可以看出,加入的64个元素位于数组中的6

2021-10-21 21:31:20 219 2

原创 HashSet中table表中树化问题讨论

HashSet的底层是HashMap。 数据结构是数组加链表的形式。先调用这个方法返回一个hash值如第四行所示,利用得出来的hash值计算元素在table表数组中的位置。由此可见只要将要存储元素的hashCode设置为相同就会计算出元素应放在数组的同一个位置。用equals()方法(程序员可根据需要重写)判断将放入的元素与已放入元素比较,相同则不放置进去。接下来才进入正题,由于放置进链表的元素越来越多,链表越来越长,为提高查找性能,会将链表转成红黑树...

2021-10-21 16:13:52 499 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除