- 博客(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关注的人