JavaSE入门集合进阶(二)day07

一,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集合基本一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值