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

                        

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值