上一周我们了解了集合中的Collection集合和List系列集合,这一周我们来学习集合剩余的部分,Set集合和Map集合。
1.Set集合
(1)Set系列集合概述
1.Set集合是Collection集合的接口,包括三种实现类,即:HashSet集合,LinkedHashSet集合,以及TreeSet集合。
2.Set集合的特点:无序:即存取顺序不一致;不重复:可以去除重复;无索引:没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取元素。
3.Set集合实现类的特点:HashSet集合:无序,不重复,无索引;LinkedHashSet集合:有序,不重复,无索引;TreeSet集合:排序,不重复,无索引。
(2)哈希表
1.概述:哈希表是一种对于增删改查数据性能都较好的结构,HashSet集合底层就采取哈希表存储的数据。
2.组成
3.哈希值:是JDK根据对象的地址,按照某种规则算出来的int类型的数值。其特点为:同一对象多次调用HashCode()方法返回的哈希值是相同的;默认情况下,不同对象的哈希值是不同的。结构为
4.详细流程
(3)HashSet集合
1.特点:无序,不重复,无索引。
2.HashSet集合元素无序的底层原理:HashSet集合元素无序的底层原理为哈希表,上面以详细介绍过了。
3.HashSet集合元素去重复的底层原理:如果希望Set集合认为有2个内容相同的对象是重复的,则必须重写对象的hashCode()和equals()方法。
(4)LinkedHashSet集合
1.特点:有序,不重复,无索引。(有序指的是保证存储的元素和取出的元素顺序一致)
2.原理:底层数据结构依然为哈希表,只是每个元素又额外多了一个双链表的机制记录存储的顺序。
(5)TreeSet集合
1.特点:排序,不重复,无索引。(排序指的是按照元素的大小默认升序排序)
2.底层原理:TreeSet集合底层是基于红黑树的数据结构实现排序的,增删改查性能都很好。
3.默认规则
结论:想要使用TreeSet集合存储自定义类型,需要制定排序规则。
4.自定义排序规则
方式一
方式二
关于返回值的规则
注意:如果TreeSet集合存储的对象有实现比较规则,集合也自带比较器,默认使用集合自带的比较器排序。
2.Map集合体系
(1)Map集合概述
1.Map集合是一种双列集合,每个元素包含两个数据;也被称为”键值对集合“;是双列集合的祖宗接口,可被全部双列集合可以继承使用的。
2.元素格式:key = value(键值对元素)。
3.Map集合整体格式
4.Map集合体系
5.Map集合体系特点
6.Map集合实现类特点
7.Map集合的常用API
(2)Map集合的遍历方式
1.方式一 :键找值
常用API
2.方式二 :键值对
常用API
3.方式三 :lambda表达式
常用API
(3)HashMap集合
1.概述
实际上:Set系列集合的底层就是Map实现的,只是Set集合中的元素只要键数据,不要值数据。
2.特点及底层原理
(4)LinkedHashMap集合
1.概述及特点
2.原理:与Set集合中LinkedHashSet集合类似,为底层数据结构依然为哈希表,只是每个键值对元素又额外多了一个双链表的机制记录存储的顺序。
(5)TreeMap集合
1.概述及特点
2.自定义排序规则
3.知识补充
(1)Collection体系的特点,使用场景总结
(2)可变参数
1.概述:可变参数用在形参中可以接收多个数据,在方法内部其本质就是一个数组。格式为:数据类型...参数名称。
2.作用:接收参数非常灵活,方便。可,以不接收参数,可以接收一个或者多个参数,也可以接收一个数组。
注意
(3)集合工具类Collections
1.概述:Java.utlis.Collections:是集合工具类。
2.作用:Collections并不属于集合,是用来操作集合的工具类。
3.Collections的常用API
4.Collections的排序相关API(只针对List集合)
方式一
注意:本方式不可以直接对自定义类型的List集合排序,除非自定义类型实现了比较规则Comparable接口。
方式二
总结:到这里集合的学习就告一段落了,希望未来的学习可以更好,让我们一起努力吧。