HashSet和LinedHashSet
HashSet基于哈希值来建立
哈希值:
1.根据hashcode方法算出来的int类型的整数
2.该方法定义在Object中,所有对象都可以调用,默认使用地址值进行计算;
3.一般情况下,会重写hashcode方法,利用对象内的地址计算哈希值



当数组长度为12时,16*0.75=12,扩容数组为16*2=32
如果链表长度大于8而且数组长度大于等于64,存入的方式自动变成红黑树,提高效率


问题一:HashSet为什么存和取的顺序不一样
答:因为根据哈希值判断存入的地址,遍历开始黄色,但黄色不一定是先存入的数据

问题二:HashSet为什么没有索引
答:因为HashSet有数组,链表,和红黑树,链表上的元素怎么定义索引,所以取消了索引

问题三:HashSet是利用什么机制来保证数据的去重,利用HashCode和equals方法

LinkedHashSet:
放入的元素之间会记录相邻元素的地址值,所以有前后顺序,可以遍历双向链表


HashSet的效率比LinkedHashSet的高
