对集合的了解(2)

上一周我们了解了集合中的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接口。

方式二

 总结:到这里集合的学习就告一段落了,希望未来的学习可以更好,让我们一起努力吧。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值