我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java基础之集合Set详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java基础之集合Set详解

一、概述

Set是Java中的集合类,提供了一种无顺序,不重复的集合。常用的子类包括HashSet, TreeSet等。

  • HashSet底层使用HashMap实现,根据元素的hashCode和equals来判断是否为重复元素。当元素的hashCode相同且equals返回true时则认为是重复元素。因为使用了hash算法所以HashSet有很好的添加和访问性能。可以放入null但只能放一个null
  • TreeSet底层使用红黑树实现,Set上的元素被放在一个自动排序的红黑树中。不能放入null

二、Set的常用方法

  • add() 向Set中添加元素
  • size() 返加Set的大小,即Set中元素的数量
  • remove(Object o) 从Set上删除元素
  • boolean contains(Object o) 检查Set中是否包含某个元素,包含返回true,不包含返回false
  • iterator() 返回Set的迭代器
  • clear() 清空Setis
  • Empty() 检查Set是否为空,为空返回true, 否则返回false

package collect;

import java.util.HashSet;
import java.util.Set;


public class SetTest1 {
    public static void main(String[] args) {
        Set<String> set =  new HashSet<>();

        //添加元素到Set
        set.add("张三");
        set.add("李四");
        set.add("王五");

        //打印Set
        System.out.println(set);

        //再加入一个王五,不能添加成功
        boolean rst = set.add("王五");
        System.out.println("添加结果:" + rst);
        System.out.println(set);

        //HashSet可以加入null,但只能加入一个null
        rst = set.add(null);
        System.out.println("添加第一个null:" + rst);
        System.out.println(set);
        rst = set.add(null);
        System.out.println("添加第二个null:" + rst);
        System.out.println(set);

        //判断Set中是否包含某个元素
        rst = set.contains("张三");
        System.out.println("是否包含元素\"张三\":" + rst);

        //删除元素
        set.remove("张三");
        System.out.println(set);

        //判断Set中是否包含某个元素
        rst = set.contains("张三");
        System.out.println("是否包含元素\"张三\":" + rst);

        //Set的大小,即Set中元素的数量
        int size = set.size();
        System.out.println("Set的大小:" + size);

        //判断Set是否为空
        boolean isEmpty = set.isEmpty();
        System.out.println("Set是否为空:" + isEmpty);

        //清空Set
        set.clear();
        System.out.println(set);

        //判断Set是否为空
        isEmpty = set.isEmpty();
        System.out.println("Set是否为空:" + isEmpty);

    }
}

运行结果:

[李四, 张三, 王五]
添加结果:false
[李四, 张三, 王五]
添加第一个null:true
[null, 李四, 张三, 王五]
添加第二个null:false
[null, 李四, 张三, 王五]
是否包含元素"张三":true
[null, 李四, 王五]
是否包含元素"张三":false
Set的大小:3
Set是否为空:false
[]
Set是否为空:true

注:TreeSet不能添加null元素,添加null时会抛出NullPointerException异常


package collect;

import java.util.Set;
import java.util.TreeSet;


public class SetTest2 {
    public static void main(String[] args) {
        Set<String> set =  new TreeSet<>();

        //TreeSet不能加入null
        boolean rst = set.add(null);
        System.out.println("添加第一个null:" + rst);
        System.out.println(set);

    }
}

运行结果:

Exception in thread "main" java.lang.NullPointerException
 at java.util.TreeMap.compare(TreeMap.java:1294)
 at java.util.TreeMap.put(TreeMap.java:538)
 at java.util.TreeSet.add(TreeSet.java:255)
 at collect.SetTest2.main(SetTest2.java:19)


package collect;

import java.util.TreeSet;


public class SetTest3 {
    public static void main(String[] args) {
        TreeSet<String> set =  new TreeSet<>();

        //添加元素到Set
        set.add("B");
        set.add("A");
        set.add("李四");
        set.add("王五");
        set.add("张三");
        set.add("a");


        //打印Set
        System.out.println(set);

        //再加入一个王五,不能添加成功
        boolean rst = set.add("王五");
        System.out.println("添加结果:" + rst);
        System.out.println(set);

        //获取Set中的第一个元素
        System.out.println(set.first());
        //获取Set中的最后一个元素
        System.out.println(set.last());

        //判断Set中是否包含某个元素
        rst = set.contains("张三");
        System.out.println("是否包含元素\"张三\":" + rst);

        //删除元素
        set.remove("张三");
        System.out.println(set);

        //判断Set中是否包含某个元素
        rst = set.contains("张三");
        System.out.println("是否包含元素\"张三\":" + rst);

        //Set的大小,即Set中元素的数量
        int size = set.size();
        System.out.println("Set的大小:" + size);

        //判断Set是否为空
        boolean isEmpty = set.isEmpty();
        System.out.println("Set是否为空:" + isEmpty);

        //清空Set
        set.clear();
        System.out.println(set);

        //判断Set是否为空
        isEmpty = set.isEmpty();
        System.out.println("Set是否为空:" + isEmpty);


    }
}

运行结果:

[A, B, a, 张三, 李四, 王五]
添加结果:false
[A, B, a, 张三, 李四, 王五]
A
王五
是否包含元素"张三":true
[A, B, a, 李四, 王五]
是否包含元素"张三":false
Set的大小:5
Set是否为空:false
[]
Set是否为空:true

三、Set的遍历

3.1增强for循环


package collect;

import java.util.HashSet;
import java.util.Set;


public class SetTest4 {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();

        set.add("唐僧");
        set.add("孙悟空");
        set.add("猪悟能");
        set.add("沙悟净");
        System.out.println(set);

        for(String item:set){
            System.out.println(item);
        }
    }
}

运行结果:

[猪悟能, 孙悟空, 沙悟净, 唐僧]
猪悟能
孙悟空
沙悟净
唐僧

3.2 迭代器遍历


package collect;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;


public class SetTest5 {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();

        set.add("唐僧");
        set.add("孙悟空");
        set.add("猪悟能");
        set.add("沙悟净");
        System.out.println(set);

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

        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }

    }
}

运行结果:

[猪悟能, 孙悟空, 沙悟净, 唐僧]
猪悟能
孙悟空
沙悟净
唐僧

到此这篇关于Java基础之集合Set详解的文章就介绍到这了,更多相关Java集合Set内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java基础之集合Set详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python基础——集合(set)

集合可以去除掉列表中重复的元素。 创建 list1=[123,123,456,789]list1=set(list1)list1set1=set()type(set1)set1=set([123,123,456,456,789])set1s
2023-01-31

python基础:集合-set()

一、定义:集合是一个无序的,没有重复元素的序列。可以用来去重。使用{},和set()定义空集必须使用set()来定义可以set任何可迭代的对象string = 'this is string!'num = range(1, 11)list 
2023-01-31

java集合类源码分析之Set详解

Set集合与List一样,都是继承自Collection接口,常用的实现类有HashSet和TreeSet。值得注意的是,HashSet是通过HashMap来实现的而TreeSet是通过TreeMap来实现的,所以HashSet和TreeS
2023-05-31

python基础知识(三)set集合

set集合不同元素组成无序集合中元素必须是不可变的类型s={1,2,3,4,5,6}#增加s.add("s")#清空s.clear()#弹出s.pop()#删除指定值,删除元素不存在报错s.remove("s")#删除指定值,删除元素不存在
2023-01-31

Java 基础详解(泛型、集合、IO、反射)

计划把 Java 基础的有些部分再次看一遍,巩固一下,下面以及以后就会分享自己再次学习的一点笔记!不是有关标题的所有知识点,只是自己觉得模糊的一些知识点。1.对于泛型类而言,你若没有指明其类型,默认为Object;2.在继承泛型类以及接口的
2023-05-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录