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