学习笔记 容器--collection--HashSet类


一、Set接口特点
    1.1、无序,不可重复

        无序:指Set中的元素没有索引,只能遍历查找

        不可重复:指不允许加入重复的元素,确切的讲,新元素如果和 Set中 的某个元素通过equals()方法对比为true,则只能保留一个

         常用的实现类有:HashSet,TreeSet等,我们一般常用HashSet。

二、HashSet容器类

    2.1、特性

        HashSet是一个没有重复元素且不能保证排列顺序的集合

        HashSet允许存入null

        HashMap是是哈希算法实现

        HashSet的底层是由HashMap实现的(HashSet本质就是一个简化版的HashMap)

    2.2、算法原理

        Hash算法也称散列算法:

               

        

    2.3、HashSet存储特征分析
          HashSet是一个不保证 元素顺序 且没有 重复元素 的集合,线程是不安全的。HashSet允许有null元素

            无序,不可重复

              无序:

                在HashSet中底层是使用HashMap存放元素的。

                HashMap底层使用的是 数组与链表 实现的元素的存储,元素在数组中存放时,并不是有序存放,也不是随机存放,而是对元素的哈希值进行运算决定元素在数组中的位置。

                    

          Set set= new HashSet<>();

            set.add("s");
            set.add("m");
            set.add("e");
            set.add("ll");
            set.add("e"); //Set接口特点,不允许加入重复的元素


           for (String s:set)   //因为没有索引,所以只能增强循环   
          System.out.print(s); //不能保证有序输出,本来是smell的


              不重复:
                

                当两个元素的哈希值进行运算后 得到相同的数组中 的位置时,通过equals()方法对比两个元素是否相同,如果元素相同则不会添加该元素

          存储结构

              

            

            

      

相关