Java中Set集合的使用

2018-03-27 11:27:09

Set类继承了Conllection类,是一种集合类。Set的实现类有三个,下面我们会一一来说这些的不一样。

     HashSet

         HashSet类按照哈希算法来存取集合中的对象,存取速度比较快。

         1.Set中是不能出现重复数据的。

         2.Set中可以出现空数据。

         3.Set中的数据是无序的。

         详细见demo:

        

[java] view plain copy

  1. Set<String> set = new HashSet<String>();  

  2.     for(int i= 0;i<6;i++){  

  3.     set.add(i+"");  

  4.     }  

  5.     set.add("3");       //重复数据,不会写入  

  6.     set.add(null);      //可以写入空数据  

  7.     Iterator<String> iter = set.iterator();  

  8.     while(iter.hasNext()){  

  9.     System.out.println(iter.next());        //输出是无序的  

  10.     }  

       这段执行之后的打印输出是:

[java] view plain copy

  1. null  

  2. 3  

  3. 2  

  4. 1  

  5. 0  

  6. 5  

  7. 4  

    LinkedHashSet

        这个相对于HashSet来说有一个很大的不一样是LinkedHashSet是有序的。LinkedHashSet在迭代访问Set中的全部元素时,性能比HashSet好,但是插入时性能稍微逊色于HashSet。

       详细见demo:

[java] view plain copy

  1. Set<String> set = new LinkedHashSet<String>();  

  2. for(int i= 0;i<6;i++){  

  3.     set.add(i+"");  

  4. }  

  5. set.add("3");       //重复数据,不会写入  

  6. set.add(null);      //可以写入空数据  

  7. Iterator<String> iter = set.iterator();  

  8. while(iter.hasNext()){  

  9.     System.out.println(iter.next());        //输出是有序的  

  10. }  

         输出打印如下:

[java] view plain copy

  1. 0  

  2. 1  

  3. 2  

  4. 3  

  5. 4  

  6. 5  

  7. null  

 

    TreeSet

         TreeSet的特点是:

         1.不能写入空数据

         2.写入的数据是有序的。

         3.不写入重复数据

        详细见demo:

[java] view plain copy

  1. Set<String> set = new TreeSet<String>();  

  2. for(int i= 0;i<6;i++){  

  3.     set.add(i+"");  

  4. }  

  5. set.add("3");       //重复数据,不会写入  

  6. //set.add(null);        //不可以写入空数据        

  7. Iterator<String> iter = set.iterator();  

  8. while(iter.hasNext()){  

  9.     System.out.println(iter.next());        //输出是有序的  

  10. }  


     输出打印为:


[java] view plain copy

  1. 0  

  2. 1  

  3. 2  

  4. 3  

  5. 4  

  6. 5  


  • 2020-03-09 22:11:39

    聊聊真实的 Android TV 开发技术栈

    智能电视越来越普及了,华为说四月发布智能电视跳票了,一加也说今后要布局智能电视,在智能电视方向,小米已经算是先驱了。但是还有不少开发把智能电视简单的理解成手机屏幕的放大,其实这两者并不一样。

  • 2020-03-11 09:43:20

    JavaScript shift() 方法

    shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

  • 2020-03-11 09:45:19

    45个优秀的vue开源项目

    在过去一年里,前端开发发展迅速,前端工程师的薪资亦是水涨船高。2019 更是热度不减,而作为近年来尤为热门的前端框架,Vue.js 自是积累了大量关注。本文将为你介绍 2019 年最值得关注的 45 个 Vue.js 开源项目——Let's go!

  • 2020-03-11 18:26:52

    Mac设置ADB

    adb在 ~/Library/Android/sdk/platform-tools文件夹内

  • 2020-03-11 19:40:56

    java.util.zip.ZipException: zip file is empty

    三、总结 出现 java.util.zip.ZipException: zip file is empty错误,表示你本地使用的jar包或者aar包可能为空,你可以检查下文件大小,如果为空,可以替换本地的jar包或者aar包为正常的jar包或者aar包,或者如果官方有相关的资源的话直接使用官方的依赖资源即可。