奇幻新游活动中心



JAVA高级特性(三)——Set集合

一、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 对象名=new HashSet(); //T是数据类型

HashSet 对象名=new HashSet();

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 集合名=new LinkHashSet(); //T是数据类型

LinkHashSet 集合名=new LinkHashSet();

3. 3 LinkHshSet集合的基本用法

LinkHashSet与HashSet的用法基本一致.

四、TreeSet集合

4.1 TreeSet 集合特点

——元素按一定顺序排序,元素不重叠

1、元素有序:这里的顺序不是指存储和取出的顺序,而是按照一定的规则进行排序,具体排序方法取决于构造方法。

TreeSet(): 根据其元素的自然排序进行排序;

TreeSet (Comparator comparator):根据指定的比较器进行排序

2、没有索引的方法:所以不能用普通的for循环遍历,可以用加强for或迭代器iterator

3、由于是Set集合,所以不包含重复元素

4.2 TreeSet 创建对象格式

格式: Set 集合名=new TreeSet(); // T表示数据类型

TreeSet 集合名=new TreeSet();

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、重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写