Set集合,继承自java.util.Collection接口,是java.util下的无序集合,允许null值
set集合特性
- 无序
- 不可重复
- 非线程安全
set实现类
1)HashSet : 底层哈希表,hashmap机制,不可重复,迭代无序输出
2)LinkedHashSet: 底层链表+哈希表,hashmap机制,不可重复,迭代按插入的顺序输出
3)TreeSet: 底层二叉树,hashmap机制,有序不可重复,迭代按hashcode顺序输出
Set是如何保证不可重复
Set底层是使用的HashMap机制
HashSet的add方法调用了HashMap的put方法,元素值作为map的key值,所以,不可重复
HashSet不可重复是因为封装类重写了hashcode和equlas方法
若像Set中放入相同的HashCode和equals相同,是否会覆盖
Set中放入相同的元素,不会覆盖;
Map中放入相同的key,不同的value值,key不会覆盖,value会修改
Set扩容机制
Set的底层是HashMap,Set构造器使用的HashMap的构造器,所以,Set的扩容机制同Map一样
1)初始化