- hashSet 的底层其实就是hashMap。
- hashMap的数据结构是 : 数组 ->链表->红黑树(avl树)平衡二叉树。
- 添加一个元素时,先会得到hash值,但是,他得到的hash值不会直接使用,他会处理下,处理格式就是 hash值 >>>16 他的hash值无符号右移十六位。 再转成 数组的索引值
- 找到存储数据表table,看这个索引的位置是否已经存放有元素,如果没有直接加入在数组中
- 如果有,就调用equals方法比较,具体equals方法,是看程序猿如何去定义了,有没有重写equals方法,如果相同就放弃添加。如果不同,就添加到最后。
- 在java8中,如果一条链表元素个数到底了 8个的时候,并且table的大小(数组)的大小到达64,就会转成红黑树。
更多的在:https://blog.csdn.net/vking_wang/article/details/14166593
相关文章
- 02-22python-使用扭曲检查IRC通道中的用户是否“发声”或“ op”
- 02-22BIDI SFP光模块和普通SFP光模块的介绍
- 02-22Google Fuchsia OS 可能的第一款手机曝光!华为在 Honor Play 上启动新操作
- 02-22python – 所有因子产品的枚举小于最大值
- 02-22Mac电脑上一款非常时尚高清的动态壁纸Living Wallpaper HD
- 02-22SFP光模块是什么? SFP光模块的类型及应用介绍!
- 02-22Python 列表实现字典的get功能
- 02-22一个喜剧简单的python程序上的IRC连接错误
- 02-22G - Non-Prime Factors Kattis - nonprimefactors (筛1-n内的当前数中非素数的个数)
- 02-224.中继网络安全通信中的联合能量收集与干扰设计(前两部分)