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  


  • 2017-01-20 21:59:11

    WEBPACK DEV SERVER

    webpack-dev-server是一个小型的node.js Express服务器,它使用webpack-dev-middleware中间件来为通过webpack打包生成的资源文件提供Web服务。它还有一个通过Socket.IO连接着webpack-dev-server服务器的小型运行时程序。

  • 2017-01-21 10:32:29

    Vue-cli proxyTable 解决开发环境的跨域问题

    和后端联调时总是会面对恼人的跨域问题,最近基于Vue开发项目时也遇到了这个问题,两边各自想了一堆办法,查了一堆资料,加了一堆参数,最后还得我把自己的localhost映射成上线时将要使用的域名。

  • 2017-01-21 21:44:29

    详解 ESLint 规则,规范你的代码

    在很久之前就想通过工具来规范自己的代码风格,减少程序出错的概率,如果看过我的 一个前端程序猿的Sublime Text3的自我修养 ,这篇博客的朋友,肯定知道在当时我使用 SublimeLinter-jshint 插件来规范风格,但是实际上一直懒癌发作也没去看它的文档,使用着它默认的规则。不过现在是时候切换到 ESLint 了!

  • 2017-01-23 23:09:16

    使用 CSS3 实现超炫的 Loading(加载)动画效果

     SpinKit 是一套网页动画效果,包含8种基于 CSS3 实现的很炫的加载动画。借助 CSS3 Animation 的强大功能来创建平滑,易于定制的动画。SpinKit 的目标不是提供一个每个浏览器都兼容的解决方案,而是给现代浏览器提供更优的技术实现方案和更佳的使用体验。(为保证最佳的效果,请在 Chrome、Firefox 和 Safari 等现代浏览器中浏览)