一,Set集合
1.特点
(1)HashSet:元素是无序的,不重复的,无索引
(2)LinkedHashSet:元素是有序的,不重复的,无索引
(3)TreeSet:元素是可排序的,默认按照大小升序处理,不重复的,无索引
2.Set的实现类
(1)HashSet
①底层原理:基于哈希表实现的
②利用哈希表操作数据的流程
Ⅰ:创建一个长度为16,默认加载因子为0.75的数组,数组名table
Ⅱ:根据元素的哈希值跟数组的长度计算出应存入的位置
Ⅲ:判断当前位置是否为null,如果为null就直接存入,如果不为null,则用equals方法比较属性值,如果一样则不存,如果不一样则挂在原数据下面
Ⅳ:当数组存到长度*0.75的地方时,再存入数据就会自动扩容,每次扩容为原来的两倍
③扩展
Ⅰ:如果链表长度超过8且数组长度超过64的时候,链表自动转化为红黑树
Ⅱ:如果Set集合存储的是自定义对象,必须重写对象的hashCode和equals方法
Ⅲ:JDK8之前的哈希表是由数组和链表组成,从JDK8开始是由数组、链表和红黑树组成
(2)LinkedHashSet
①底层原理:基于哈希表和双链表实现
②因为是继承HashSet,其他特点与HashSet基本一致
(3)TreeSet
①底层原理:基于红黑树实现
②自定义对象排序
Ⅰ:自定义类实现Comparable接口,重写比较规则
Ⅱ:集合自定义Comparator比较器对象,重写比较规则
二,Collection其他知识
1.可变参数
(1)本质:一种特殊的形参,定义在方法,构造器的形参列表里
(2)格式:数据类型...参数名称
(3)特点
①:可以不传数据给它,可以穿一个或者多个数据给它,也可以穿一个数组给它
②:方法内部把它当成一个数组来使用
(4)好处:可以用来灵活的接受数据
(5)注意事项
①一个形参列表中可变参数只能有一个
②可变参数必须放在形参列表的最后面
2.Collections工具类:扩展单列集合功能的一个工具类
三,Map集合
1.Map集合体系
(1)HashMap:元素是无序的,不重复的,无索引
(2)LinkedHashMap:元素是有序的,不重复的,无索引
(3)TreeMap:元素是可排序的,不重复的,无索引
2.Map集合的遍历方式
(1)键找值:先获取Map集合全部的键,再通过遍历键来找值
(2)键值对:把键值对看成一个整体进行遍历
(3)Lambda表达式
3.Map集合特性:Map集合的底层都是对应的Set集合,所以特性与Set集合基本一致