码迷,mamicode.com
首页 > 其他好文 > 详细

Set接口

时间:2019-10-17 17:35:59      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:str   dha   相同   不一致   img   区别   hello   com   pre   

Set

  定义

    set中不允许放入重复的元素(元素相同时只取一个)。它使用equals()方法进行比较,如果返回true,两个对象的HashCode值也应该相等。

  特点:  

    Set接口是无序的

    Set 是继承于Collection的接口。它是一个不允许有重复元素的集合。

    Set可以存储null值,但是null不能重复

    Set的实现类都是基于Map来实现的(HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的)。

  例:

 1 public class Demo02 {
 2     public static void main(String[] args) {
 3         Set<String> set=new HashSet<String>();
 4         set.add("hello");
 5         set.add("java");
 6         set.add("hello");
 7         for(String s:set){
 8             System.out.println(s);
 9         }
10     }
11 }

  如图所示:

    技术图片

 

 

HashSet

  是实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。

  特点

    底层数据结构是 哈希表,HashSet的本质是一个"没有重复元素"的集合,它是通过HashMap实现的。HashSet中含有一个"HashMap类型的成员变量"map,在HashSet中操作函数,实际上都是通过map实现的。

    哈希表保证唯一  依赖hashcode和equals方法

    存储到集合中是无序的

  例:

 1 //用Set对象调用add方法
 2 public class Demo03 {
 3     public static void main(String[] args) {
 4         int str="abc".hashCode();
 5         int p=new Person("小黄",18).hashCode();
 6         System.out.println(p);
 7         Set<Person> s=new HashSet<Person>();//重写equals和hashCode方法
 8         s.add(new Person("小黑",18));
 9         s.add(new Person("小黑",18));
10         s.add(new Person("lao黑",19));
11         for(Person a:s){
12             System.out.println(a);//没有重复元素
13         }
14     }
15 }

 

  如图所示:

    技术图片

 

 

LinkeHashSet

  底层数据结构是 链表和哈希表

  链表保证元素有序

  哈希表保证元素唯一

  例:

 1 public class Demo04 {
 2     public static void main(String[] args) {
 3         LinkedHashSet<String> set=
 4                 new LinkedHashSet<String>();
 5 
 6         set.add("hello");
 7         set.add("java");
 8         set.add("hello");
 9         set.add("java");
10         //遍历
11         for(String s:set){
12             System.out.println(s);
13         }
14     }
15 }

  如图所示:

    技术图片

 

 

Set集合和List集合的区别?

        Set: 不允许元素重复, 集合元素唯一(元素可以为null), 不能保证迭代顺序恒久不变, 无序(存储和取出不一致).

        List:  允许元素重复,  并且元素有序(存储和取出一致).

 

 

  

Set接口

标签:str   dha   相同   不一致   img   区别   hello   com   pre   

原文地址:https://www.cnblogs.com/zhai113/p/11632689.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!