Java基础之Set

文章目录

    • 一、Set介绍
    • 二、Set常用方法 `Set应知应会`
      • 2.1 调用add()方法增添数据
      • 2.2 调用remove()方法删除数据
      • 2.3 调用clear()方法清空数据
      • 2.4 调用contains()方法判断集合中是否存在指定的元素
      • 2.5 调用isEmpty()方法判断集合是否为空
      • 2.6 调用size()方法获取集合的长度
    • 三、Set不可重复特点
    • 四、Set存取顺序不一致
      • 4.1 情况:输入顺序与输出顺序不一致
      • 4.2 情况:输入顺序与输出顺序一致
    • 五、Set没有带索引的方法
      • 5.1 普通输出语句输出Set集合
      • 5.2 forEach语句输出Set集合
      • 5.3 Iterator迭代器输出Set集合

一、Set介绍

Set是集合体系中较为重要的接口,它具有单列存储的特点,即一次只能添加一个元素。它具有三大特点:
不可重复:当存入相同的数据时,重复的元素将会被自动去除,集合中不会有重复的值。
存取顺序不一致:存入数据的顺序与输出数据的顺序不一定一致。
没有带索引方法:无法使用普通for循环来遍历输出Set集合。
由于Set是一个接口,因此我们在创建Set对象时必须指定其实现类,其常用的实现类有HashSet和TreeSet。

接下来我们将结合代码来具体学习Set相关知识。

二、Set常用方法 Set应知应会

Set作为接口,它最常见的实现类是HashSet和TreeSet,作为接口它抽取了所有实现类的共有方法,所有实现Set接口的实现类均可使用这些方法。例如HashSet和TreeSet均可使用如下共有方法。

方法名 说明
boolean add(E e) 添加元素
boolean remove(Object o) 从集合中移除指定的元素
void clear() 清空集合中的元素
boolean contains(Object o) 判断集合中是否存在指定的元素
boolean isEmpty() 判断集合是否为空
int size() 集合的长度,也就是集合中元素的个数

2.1 调用add()方法增添数据

具体实现类为HashSet的Set

public static void main(String[] args) {
        //创建一个数据类型为String的Set对象,并指明其实现类为HashSet
        Set<String> set=new HashSet<>();
        //调用add()方法增添数据
        set.add("aoao");
        set.add("daidai");
        set.add("zhangsan");
        set.add("lisi");
        set.add("wangwu");
        set.add("zhaoliu");
        //普通输出
        System.out.println(set);
    }

运行结果:
Java基础之Set_第1张图片


具体实现类为TreeSet的Set

public static void main(String[] args) {
        //创建一个数据类型为String的Set对象,并指明其实现类为TreeSet
        Set<String> set=new TreeSet<>();
        //调用add()方法增添数据
        set.add("aoao");
        set.add("daidai");
        set.add("zhangsan");
        set.add("lisi");
        set.add("wangwu");
        set.add("zhaoliu");
        //普通输出
        System.out.println(set);
    }

运行结果:
Java基础之Set_第2张图片


2.2 调用remove()方法删除数据

接下来我们就以实现类为HashSet的Set来具体举例

public static void main(String[] args) {
        //创建一个数据类型为String的Set对象,并指明其实现类为HashSet
        Set<String> set=new HashSet<>();
        //调用add()方法增添数据
        set.add("aoao");
        set.add("daidai");
        set.add("zhangsan");
        set.add("lisi");
        set.add("wangwu");
        set.add("zhaoliu");
        //调用remove()方法删除数据
        set.remove("zhangsan");
        //普通输出
        System.out.println(set);
    }

运行结果:
Java基础之Set_第3张图片


2.3 调用clear()方法清空数据

public static void main(String[] args) {
        //创建一个数据类型为String的Set对象,并指明其实现类为HashSet
        Set<String> set=new HashSet<>();
        //调用add()方法增添数据
        set.add("aoao");
        set.add("daidai");
        set.add("zhangsan");
        set.add("lisi");
        set.add("wangwu");
        set.add("zhaoliu");
        //调用clear()方法清空数据
        set.clear();
        //普通输出
        System.out.println(set);
    }

运行结果:
Java基础之Set_第4张图片


2.4 调用contains()方法判断集合中是否存在指定的元素

public static void main(String[] args) {
        //创建一个数据类型为String的Set对象,并指明其实现类为HashSet
        Set<String> set=new HashSet<>();
        //调用add()方法增添数据
        set.add("aoao");
        set.add("daidai");
        set.add("zhangsan");
        set.add("lisi");
        set.add("wangwu");
        set.add("zhaoliu");
        //调用contains()方法判断集合中是否存在指定的元素
        boolean aoao = set.contains("aoao");
        System.out.println(aoao);

        boolean aoAo = set.contains("AoAo");
        System.out.println(aoAo);
    }

运行结果:
Java基础之Set_第5张图片


2.5 调用isEmpty()方法判断集合是否为空

public static void main(String[] args) {
        //创建一个数据类型为String的Set对象,并指明其实现类为HashSet
        Set<String> set=new HashSet<>();
        //调用add()方法增添数据
        set.add("aoao");
        set.add("daidai");
        set.add("zhangsan");
        set.add("lisi");
        set.add("wangwu");
        set.add("zhaoliu");
        //调用isEmpty()方法判断集合是否为空
        boolean empty = set.isEmpty();
        System.out.println(empty);

        //调用clear()方法清空集合数据
        set.clear();

        //调用isEmpty()方法判断集合是否为空
        boolean empty1 = set.isEmpty();
        System.out.println(empty1);
    }

运行结果:
Java基础之Set_第6张图片


2.6 调用size()方法获取集合的长度

public static void main(String[] args) {
        //创建一个数据类型为String的Set对象,并指明其实现类为HashSet
        Set<String> set=new HashSet<>();
        //调用add()方法增添数据
        set.add("aoao");
        set.add("daidai");
        set.add("zhangsan");
        set.add("lisi");
        set.add("wangwu");
        set.add("zhaoliu");
        //调用size()方法获取集合的长度
        int size = set.size();
        System.out.println(size);
    }

运行结果:
Java基础之Set_第7张图片


三、Set不可重复特点

我们增添两个aoao和两个daidai数据

public static void main(String[] args) {
        //创建一个数据类型为String的Set对象,并指明其实现类为HashSet
        Set<String> set=new HashSet<>();
        //调用add()方法增添数据
        set.add("aoao");
        set.add("daidai");
        set.add("aoao");
        set.add("lisi");
        set.add("wangwu");
        set.add("daidai");
        //普通输出
        System.out.println(set);
    }

运行结果:(我们看到多余的aoao与daidai被筛掉了
Java基础之Set_第8张图片


四、Set存取顺序不一致

存取顺序不一致:输出的顺序与输入的顺序不一定一致,此即为存取顺序不一致,并不是一定不一致。

4.1 情况:输入顺序与输出顺序不一致

我们存入数据的顺序是aoao,daidai,bobo,lisi,wangwu,zhangsan

public static void main(String[] args) {
        //创建一个数据类型为String的Set对象,并指明其实现类为HashSet
        Set<String> set=new HashSet<>();
        //调用add()方法增添数据
        set.add("aoao");
        set.add("daidai");
        set.add("bobo");
        set.add("lisi");
        set.add("wangwu");
        set.add("zhangsan");
        //普通输出
        System.out.println(set);
    }

运行结果:(我们看到输出的顺序是aoao,lisi,bobo,zhangsan,wangwu,daidai
Java基础之Set_第9张图片


4.2 情况:输入顺序与输出顺序一致

我们存入数据的顺序是aa,bb,cc,dd,ee,ff

public static void main(String[] args) {
        //创建一个数据类型为String的Set对象,并指明其实现类为HashSet
        Set<String> set=new HashSet<>();
        //调用add()方法增添数据
        set.add("aa");
        set.add("bb");
        set.add("cc");
        set.add("dd");
        set.add("ee");
        set.add("ff");
        //普通输出
        System.out.println(set);
    }

运行结果:(我们看到输出的顺序是aa,bb,cc,dd,ee,ff
Java基础之Set_第10张图片


五、Set没有带索引的方法

因为Set没有带索引的方法,因此遍历Set集合时只能使用普通输出语句,forEach语句和Iterator迭代器

5.1 普通输出语句输出Set集合

public static void main(String[] args) {
        //创建一个数据类型为String的Set对象,并指明其实现类为HashSet
        Set<String> set=new HashSet<>();
        //调用add()方法增添数据
        set.add("aa");
        set.add("bb");
        set.add("cc");
        set.add("dd");
        set.add("ee");
        set.add("ff");
        //普通输出
        System.out.println(set);
    }

运行结果:
Java基础之Set_第11张图片


5.2 forEach语句输出Set集合

public static void main(String[] args) {
        //创建一个数据类型为String的Set对象,并指明其实现类为HashSet
        Set<String> set=new HashSet<>();
        //调用add()方法增添数据
        set.add("aa");
        set.add("bb");
        set.add("cc");
        set.add("dd");
        set.add("ee");
        set.add("ff");
        //forEach语句输出Set集合
        //由于Set集合的数据类型为String,因此s的数据类型为String
        //其中s即为set的复用名,相当于set
        for (String s : set) {
            System.out.println(s);
        }
    }

运行结果:
Java基础之Set_第12张图片


当然我们也可以使用其他数据类型来创建Set对象,并用forEach()语句

public static void main(String[] args) {
        //创建一个数据类型为Character的Set对象,并指明其实现类为HashSet
        Set<Character> set=new HashSet<Character>();
        //调用add()方法增添数据
        set.add('a');
        set.add('b');
        set.add('v');
        set.add('d');
        set.add('e');
        set.add('z');
        //forEach语句输出Set集合
        //由于Set集合的数据类型为Character,因此c的数据类型为Character
        //其中c即为set的复用名,相当于set
        for (Character c : set) {
            System.out.println(c);
        }
    }

运行结果:
Java基础之Set_第13张图片


5.3 Iterator迭代器输出Set集合

public static void main(String[] args) {
        //创建一个数据类型为Character的Set对象,并指明其实现类为HashSet
        Set<Character> set=new HashSet<Character>();
        //调用add()方法增添数据
        set.add('a');
        set.add('b');
        set.add('v');
        set.add('d');
        set.add('e');
        set.add('z');
        //Iterator迭代器输出Set集合
        //由于Set的数据类型为Character,因此Iterator的数据类型也为Character
        Iterator<Character> iterator=set.iterator();
        //iterator.hasNext()的作用是判断当前位置是否存在元素,若存在元素则为true,否则为false
        while(iterator.hasNext()){
            //iterator.next()的作用是获取当前位置元素,之后指向下一个位置
            System.out.println(iterator.next());
        }
    }

运行结果:
Java基础之Set_第14张图片


OK!!!Set介绍结束!!!

你可能感兴趣的:(Java基础知识总结,java,开发语言)