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  


  • 2019-10-15 09:18:48

    腾讯 Android 面试笔试总结

    Activity中的几种启动模式 Android消息机制 IntentService 事件分发 Android性能优化、内存优化 内存优化 View的绘制 Eventbus原理 Rxjava的操作符有哪些,说说他们的作用 线程锁 锁方法和类对象啥的有啥区别 AsyncTask原理 说说MVP和MVVM的特点 Android中用到的观察者模式有哪些地方 说说google新出的Lifecycle框架 okhttp原理 Retrofit原理 RecyclerView源码、缓存分析 Binder机制 Android Jetpack Kotlin Activity中的几种启动模式

  • 2019-10-15 09:20:49

    SpringBoot注解梳理

    @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。 @Configuration 等同于spring的XML配置文件;使用Java代码可以检查类型安全。 @EnableAutoConfiguration 自动配置。 @ComponentScan 组件扫描,可自动发现和装配一些Bean。 @Component可配合CommandLineRunner使用,在程序启动后执行一些基础任务。 @RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。 @Autowired自动导入。 @PathVariable获取参数。 @JsonBackReference解决嵌套外链问题。 @RepositoryRestResourcepublic配合spring-boot-starter-data-rest使用。

  • 2019-10-15 09:52:00

    动图解释递归,按值传递和按引用传递的区别,线性查找和二分查找,二叉查找树

    对于大部分人,数据结构一直是一个短板,当然我也是,不是学不会,而是容易忘,就拿最简单的排序来说吧,当时学习的时候明明已经弄得很清楚了,过了一段时间不用又忘记了,还要重新再看一遍,不知道有多少小伙伴和我有一样的烦恼。今天让我们用用动图的方式学习一下数据结构中的递归和二分查找吧,这种讲解方式非常生动,而且非常容易记住和理解。

  • 2019-10-16 21:02:47

    vue中mixins的详细分析一

    混入 (mixins): 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。

  • 2019-10-16 21:04:47

    vue中mixins的详细分析二

    当混合里面包含异步请求函数,而我们又需要在组件中使用异步请求函数的返回值时,我们会取不到此返回值,如下: