一、Set集合
1.1 Set集合的概述和特点
——Set集合是一个存储元素不能重复的集合方式,因为存储数据的时候通过判断其元素的hashCode值,不一样再存储。
Set集合特点:是Collection集合的子类
不包含重复的元素的集合
没有带索引的方法,所以不能用普通的for循环遍历。
1.2 哈希值
哈希值:是JDK根据u第项的地址或者数字运算出来的int类的数值;
Object类中有一个方式可以获取哈希值, public int hashCode();返回哈希值。
对象哈希值的特点 :
1、同一个对象多次调用和hashCode()方法返回的哈希值是相同的。
2、默认情况下,不同对象的哈希值是不同,但可以通过重写hashCode方法使得哈希值相同。
注意:有不一样的字符串 的哈希值也有一样,因为String 重写了hashCode方法,比如“重地“和”通话“,哈希值都是1179395
二、HashSet集合
2.1 HashSet集合的特点
————也就说 HashSet是 元素不重复,输入输出无序
1、底层数据结构是哈希表
2、对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的先后顺序一致;
3、没有带索引的方法,所以不能用普通的for循环遍历, 但可以用加强for和 iterator 迭代器遍历
4、由于是Set集合,所以不包含重复元素
2.2 HashSet 集合使用格式
格式: Set<T> 对象名=new HashSet<T>(); //T是数据类型
HashSet 对象名=new HashSet<T>();
2.3 HashSet集合保证元素唯一性源码分析
——HashSet是通过哈希值存储元素,使得元素的不重复性。
—— 要保证唯一性,需要在引用类型中重写hashCode()和equals()方法;
2.4 HashSet的基本方法
因为HashSet是Set类的子类,而Set类是Collection的子类,即hashCode的基本方法继承了Collection方法,如下
方法 | 含义 |
boolean add(E e); | 添加元素 |
boolean remove(object o); | 移除指定的元素 |
void clear(); | 清楚集合种所有的元素 |
boolean contains (Object o); | 判断集合种是否存在指定的元素 |
boolean iEmpty(); | 判断集合是否为空 |
int size(); | 计算集合长度(元素个数) |
三、LinkHashSet 集合
3.1 LinkHashSet集合概述和特点
1、哈希表和链表实现Set接口,具有可预测的迭代次序;
2、由链表保证元素有序,也就是说元素的存储和取出顺序hi是一致的。
3、由哈希值保证元素唯一,也就是说没有重复的元素
3.2 LinkHashSet集合创建对象格式
格式:Set<T> 集合名=new LinkHashSet<T>(); //T是数据类型
LinkHashSet <T> 集合名=new LinkHashSet<T>();
3. 3 LinkHshSet集合的基本用法
LinkHashSet与HashSet的用法基本一致.
四、TreeSet集合
4.1 TreeSet 集合特点
——元素按一定顺序排序,元素不重叠
1、元素有序:这里的顺序不是指存储和取出的顺序,而是按照一定的规则进行排序,具体排序方法取决于构造方法。
TreeSet(): 根据其元素的自然排序进行排序;
TreeSet (Comparator comparator):根据指定的比较器进行排序
2、没有索引的方法:所以不能用普通的for循环遍历,可以用加强for或迭代器iterator
3、由于是Set集合,所以不包含重复元素
4.2 TreeSet 创建对象格式
格式: Set<T> 集合名=new TreeSet<T>(); // T表示数据类型
TreeSet<T> 集合名=new TreeSet<T>();
4.3 自然排序Comparable的使用
1、存储学生的对象并遍历,创建TreeSet集合使用无参构造方法
结论:1、用TreeSet 集合存储定义对象,无参构造方法使用的是自然排序对元素进行排序的;
2、自然排序,就是让元素元素所属的类实现Comparable接口,重写compareTo(To)方法
3、重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写。
4.3 比较器排序Comparator 的使用
——存储学生对象并遍历,创建TreeSet集合使用的带参构造方法
结论:
1、用TreeSet集合存储自定义对象,带参构造方法使用的是比较器排序对元素进行排序的;
2、比较器排序,就是让集合构造方法接收Comparator的实现对象。重写compara(T o1,T o2)方法;
3、重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写