Collection List Set集合完善结束撒花
Collection集合特点
List系列集合 : 添加的元素是有序的, 可重复, 有索引
ArrayList LinkdList 有序,可重复,有索引
Set系列集合 : 添加的元素是无序, 不重复, 无索引
HshSet : 无序, 不重复, 无索引 ; LinkedHashSet : 有序 , 不重复, 无索引
TreeSet : 按照大小默认升序排序 , 不重复 , 无索引
需要注意 : 集合支持泛型 , 集合和泛型不支持基本类型 , 只支持引用数据类型
HashSet 原理解读
- 创建一个默认长度16 的数组 , 数组名叫table
- 根据元素的哈希值 跟数组的长度求余 计算出应存入的位置( 哈希算法 )
- 判断当前位置是否为null , 如果是null 直接存入
- 如果位置不为 null , 表示有元素 , 则调用equals一 一方法比较
- 如果一样 就挂在老元素下面
- ( 当一个链表超过8个则转化为红黑树 )
注意: 当数组存满到 16 * 0.75 = 12 时 ,就自动扩容, 每次扩容到原先的两倍
结论 : 通过希望Set集合认为 2 个内容一样的对象就是重复的所以我们要重写对象的
HashScode() 和 equalse() 方法
LinkedHashSet 原理 基本上跟HashSet 一致 , 知识底层数据每个元素又额外多了一个双量表的机制 记录存储的顺序(每一个)
TreeSet集合 概述和特点
不重复 , 无索引 , 可排序
这里的可排序 : 对于数值类型 : Integer , Double , 官方默认按照大小进行升序排序
对于字符串类型: 默认按照首字符的编号进行升序 排序
( 如果 想要使用TreeSet存储自定义类型, 需要指定排序规则 )
不懂就看黑马Java基础 134
之前TreeSet 还不懂就到这里来看
treeSet 集合自定义排序规则 两种方式
1. 类实现Comparable 接口, 重写比较规则
2.集合自定义Comparator比较器对象, 重写比较规则(优先使用这个)
浙公网安备 33010602011771号