- Set 接口属于抽象类
- Set 下面有两个实现类,HashSet 和 TreeSet
一、Set 接口
1、Set 概述
- 一个不包含重复元素的 Collection
2、Set 案例
- 存储字符串并遍历
- 存储自定义对象并遍历
二、HashSet 实现类
1、HashSet 类概述
- 不保证 set 的迭代顺序
- 特别是它不保证该顺序恒久不变
2、HashSet 如何包装元素的唯一性
-
底层数据结构是哈希表(元素是链表的数组)
-
哈希表依赖于哈希值存储
-
添加功能底层依赖两个方法:
int hashCode()
boolean equals(Object obj)
三、LinkedHashSet 实现类
1、概述
- 元素有序唯一
- 由链表保证元素有序
- 由哈希表保证元素唯一
四、TreeSet 实现类
1、概述
- 使用元素的自然顺序对元素进行排序
- 或者根据创建Set 时提供的 Comparator 进行排序
- 具体取决与使用的构造方法
2、TreeSet 是如何保证元素的排序和唯一性的
- 底层数据结构是红黑树(红黑树是一种自平衡的二叉树)