一、Set系列集合
Set系列集合特点
- 无序:存取顺序不一致
- 不重复:可以去除重复
- 无索引:没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取元素
Set集合实现类特点
- HashSet:无序、不重复、无索引
- LinkedHashSet:有序、不重复、无索引
- TreeSet:排序、不重复、无索引
Set集合的功能基本上于Collection的API一致。
1.HashSet底层原理
- HashSet集合底层采取哈希表存储的数据。
- 哈希表是一种对于增删改查数据性能都较好的结构。
2.哈希表的组成
- JDK8之前,底层使用数组+链表组成
- JDK8之后,底层采用数组+链表+红黑树组成
哈希值
- 是JDK根据对象的地址,按照某种规则算出来的int类型的数值。
Object类的API
- public int hashCode():返回对象的哈希值
对象的哈希值特点
- 同一个对象多次调用hashCode()方法返回的哈希值是相同的
- 默认情况下,不同对象的哈希值是不用的
哈希表的详细流程
ps:只要往表中增加到12个元素,不管是占用一个位置还是链表连接,都会触发扩容机制
LinkedHashSet
TreeSet
二、Map系列集合
Map的遍历方式
1.键找值
2.键值对
3.Lambda
Map集合的实现类HashMa
HashTable:初始大小为11,临界因子为0.75,扩容机制为自己看源码
properties
总结
三、Collections工具类
标签:Map,Set,链表,索引,哈希,集合 From: https://www.cnblogs.com/Ppotato33/p/16755891.html