Java集合框架之Set集合简介

2023-11-12

和List集合一样,Set集合也是属于单列集合,同属于Collcetion集合体系下
在这里插入图片描述
List和Set都是单列集合,但是他们是存在区别的
List:有序,元素可重复的单列集合
Set:无序,元素不可重复的单列集合

Set和List集合一样属于接口,无法直接创建实例化对象,需要子类来创建;下面介绍两个两个常用的子类:

HashSet:散列集合,存放是无序的

		//通过HashSet创建Set的实例化对象
		Set<String> set = new HashSet<String>();

TreeSet:存放有序,不能存放null值,会报空指针异常

		//通过TreeSet创建Set的实例化对象
		Set<String> set = new TreeSet<String>();

上述是创建Set集合实例化对象的两种方法,既然是集合我们就可以对存放的数据通过泛型进行限制

对于Set集合元素是不能存放重复的,下面通过添加数据来验证(HashSet演示)

		//通过TreeSet创建Set的实例化对象
		Set<String> set = new HashSet<String>();
		//添加数据
		set.add("hello");
		set.add("java");
		set.add("world");
		//打印
		System.out.println(set);//打印结果:[java, world, hello]
		//添加相同的数据
		set.add("hello");
		//打印
		System.out.println(set);//打印结果:[java, world, hello]

通过上述两次打印结果,可以看到,对于set集合中的数据是不能重复出现的,因此添加第二个hello的时候就没能存放到集合中

那么HashSet又是如何保证数据的唯一性的呢?
当比较两个对象是否相同时,首先会比较对象的hashCode值,如果hashCode值相同再调用equals方法进行比较。如果equals比较返回true就判定两个对象相同。如果hashCode值不相同,就直接判定两个对象不相同,不会再调用equals方法

Set集合中也包含一些方法供我们使用
1.boolean contains(Object obj):判断是否包含指定的值

		//通过TreeSet创建Set的实例化对象
		Set<String> set = new HashSet<String>();
		//添加数据
		set.add("hello");
		set.add("java");
		set.add("world");
		//打印
		System.out.println(set.contains("java"));//打印结果:true

2.boolean isEmpty():判断集合是否为空;true表示为空,false表示不为空

		//通过TreeSet创建Set的实例化对象
		Set<String> set = new HashSet<String>();
		//添加数据
		set.add("hello");
		set.add("java");
		set.add("world");
		//打印
		System.out.println(set.isEmpty());//打印结果:false

3.boolean remove(Object obj):删除集合中指定的元素

		//通过TreeSet创建Set的实例化对象
		Set<String> set = new HashSet<String>();
		//添加数据
		set.add("hello");
		set.add("java");
		set.add("world");
		//删除元素
		set.remove("world");
		//打印
		System.out.println(set);//打印结果:[java, hello]

4.void clear():清空集合中所有的元素

		//通过TreeSet创建Set的实例化对象
		Set<String> set = new HashSet<String>();
		//添加数据
		set.add("hello");
		set.add("java");
		set.add("world");
		//清空所有元素
		set.clear();
		//打印
		System.out.println(set);//打印结果:[]

上述主要介绍了一下Set集合的特点,Set集合如何保证数据唯一性的以及Set集合中的一些方法

今天的分享就到这里了,如果有错误的地方欢迎大家来指点!大猿一直在进步

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java集合框架之Set集合简介 的相关文章

  • 如何使用 UnboundID LDAP SDK 获取 LDAP 中的 DN 和用户 ID

    当我唯一的参数是用户 ID 时 我试图获取用户的 DN 可能不止一个 我还使用 UnboundID LDap SDK 如您所见 public String getCustomerAdminDN String uid String resul
  • 模拟函数指针

    以下类包含一个应使用回调技术计算积分的方法 package integrals import java lang public class Integrals public static double f1 double x return
  • Java 访问被拒绝

    C Program Files x86 Java jdk1 6 0 17 bin gt javac VendingMachine java VendingMachine java 27 error while writing Vending
  • Java 中具有级别顺序插入的完整二叉搜索树

    我们接到一个任务 需要编码 二叉搜索树 那个树has to be complete not perfect 这意味着所有不在最低级别或次低级别的节点都应该有 2 个子节点 而最低级别的节点应尽可能远离左侧 我们需要插入到树中等级顺序 所以如
  • Android - 检测电容式触摸屏上的触摸压力?

    我听说过 MotionEvent e float press e getPressure 但这只会在没有触摸时返回 0 当我的手指触摸屏幕时返回 1 是否可以找到手指在触摸电容屏上施加的压力值 或者我的预感是否正确 即这只适用于电阻屏幕 M
  • 通过蓝牙将字符串从作为客户端的 PC 发送到作为服务器的移动设备

    我需要通过蓝牙将字符串从 PC 传输到 Android 移动设备的帮助 Android 移动设备应充当服务器并在设备屏幕上显示字符串消息 作为客户端的 PC 应该将字符串发送到移动设备 我希望服务器对提取的字符串 通过蓝牙传输 做出反应 这
  • 在 Spring Security 中创建自定义 PostAuthorize 方法

    我正在尝试创建一个自定义方法 用于预 后授权调用 如下所示 public class CustomLSecurityExpressionHandler extends DefaultMethodSecurityExpressionHandl
  • 请放心,如何在 POST 请求后从响应正文中提取生成的令牌并将其设置到标头

    执行任何请求 我需要执行身份验证POST请求正文 username somename password somepass 标头Content Type application json这给了我一个带有生成令牌的响应 我需要将其粘贴为第二个标
  • 转换为 JSON 后保留 XMLGregorianCalendar 日期格式 - Jackson Lib

    我有一个对象 它有 2 个 XMLGregorianCalendar 对象 一个用于日期 另一个用于时间 我使用 Jackson 对象映射器将日期转换为 JSON 格式 转换前的日期为2014年2月10日 时间为11 15 00 转换为 J
  • 如何设置Java线程的CPU核心亲和力?

    我搜索了以前关于类似主题的帖子 但找不到合适的答案 因此提出这个问题 非常感谢您帮助回答 我知道在 Linux 中通过任务集命令设置进程与特定 CPU 核心的关联性 但我想设置 Java 线程与特定 cpu 核心的亲和力 以便属于同一进程的
  • Bean 属性不可读或具有无效的 getter 方法

    因此 我的任务是为注册表路由编写一个简单的 Web 应用程序 使用 Spring MVC 所以我有 路线 类 我想在其中保留起点 终点和中间点列表 但我不明白如何将值从 jsp 放入列表 例如使用 jstl 所以我决定解析一个字符串 pub
  • Java检测音频文件(mp3)

    我有这段代码可以读取 mp3 文件 import java io File import java io IOException import javax sound sampled AudioSystem import javax sou
  • Java DocumentBuilder - XML 文件中的缩进错误

    我尝试使用 DocumentBuilder 用 Ja va 编写一个简单的 XML 文件 我期望 XML 文件如下所示
  • egit:设置gitignore忽略所有eclipse项目文件

    我在 github 上有一个项目 我想从中删除所有与 eclipse 相关的文件 并允许克隆它的人使用他们想要的任何 ide 这是该项目 https github com vedi0boy Archipelo https github co
  • Spring Hibernate中的@Transient方法调用

    我有一个 Pojo 类 在其中创建一个未与数据库表映射的字段 所以我必须声明字段Declaration和setter和getter方法 Transient 否则会显示错误 Transient private String docHistor
  • 为什么对象可以改变类变量的值?

    由甲骨文提供定义 http docs oracle com javase tutorial java javaOO classvars html 有时 您希望拥有所有对象共有的变量 这是通过 static 修饰符来完成的 声明中带有 sta
  • 我可以使用本机系统窗口作为父窗口使 JDialog 成为模式吗?

    我有一个 JDialog 窗口 我需要使其成为模态窗口 但父窗口不是 Java 窗口 而是本机 Windows 操作系统窗口 是否可以 不 你不能 您甚至无法不仅引用本机窗口 甚至无法引用运行在其他 JVM 中的 java 应用程序创建的窗
  • Android 调整图片大小

    我的图像存储在 SD 卡上 每个大小约为 4MB 我想调整每个的大小 而不是将其设置为 ImageView 但我不能使用BitmapFactory decodeFile path 因为异常 java lang OutOfMemoryErro
  • 如何从项目文件夹中的 jlabel 上设置图像?

    我正在尝试制作一个 Java 桌面应用程序 我想设置一个图像JLabel 我正在使用 NetBeans 从我的项目文件夹中 我的目录结构是 F gt MARKET src lib src defaultpackage demo java i
  • JVM锯齿状空闲进程

    我目前正在进行一项涉及 JVM 及其内存使用工作原理的研究 我不明白的是 JVM在空闲时用什么填充它的内存 只是为了在堆几乎达到时释放它 为什么使用的内存不只有一条平线 顺便说一句 这个 java 应用程序托管在 glassfish 上 但

随机推荐

  • Linux Top查看指定进程的CPU状态

    查看top帮助信息 不管linux还是unix 大多数命令都是支持man命令来查看帮助信息的 语法是下面这样 进入到交互界面后 用法类似vi 然后按 q 可以退出 输入 再输入关键字 可以查询相关关键字 man top 帮助信息回显 TOP
  • 华为OD机试 - 食堂供餐 - 二分查找(Java 2023 B卷 考生抽中题)

    目录 一 题目描述 二 输入描述 三 输出描述 四 补充说明 五 解题思路 六 Java算法源码 七 效果展示 1 输入 2 输出 3 说明 华为OD机试 2023B卷题库疯狂收录中 刷题点这里 一 题目描述 某公司员工食堂以盒饭的方式供餐
  • python 图像相减的不同方法

    对于图像相减采用如下方法进行结果对比 本案例中采用灰度图像 gray img jpg 如下 gray cur jpg如下 不同算法图像相减之后得结果 1 采用矩阵直接相减 diff gray cur gray pre 结果很不好 有很多噪点
  • wo 27s虚拟服务器,联通光猫wo-27s设置上网

    联通光猫wo 27s怎么设置上网呢 填写上网账号和密码那栏 要输入光猫的超级管理页面 http 192 168 1 1 CU html 输入管理员用户名和密码 CUAdmin 密码相同 也有不相同的 具体视设备参数 进入管理页面以后 点击基
  • -bash:findstr: command not found

    项目场景 在CentOS7 6 上部署公司的一个系统 问题描述 执行命令报错 keytool list keystore app jdk11Openj9 lib security cacerts storepass changeit fin
  • Centos7安装Gitlab

    安装GithLab 1 安装必要依赖 sudo yum install y curl policycoreutils python openssh server perl sudo systemctl enable sshd sudo sy
  • Sublime text 3 如何格式化HTML/css/js代码

    使用Sublime text 3 编写代码是一种享受 使用Sublime text 3 格式化HTML代码 需要安装插件 具体安装步骤如下 1 打开菜单 gt 首选项 gt 插件控制 输入 install package 2 等待程序进入插
  • DoS攻击

    原文 1 DoS攻击 DoS攻击 Denial of Service 拒绝服务攻击 通过消耗计算机的某种资源 例如计算资源 网络连接等 造成资源耗尽 导致服务端无法为合法用户提供服务或只能提供降级服务 在SDN网络的集中式架构中 控制器是天
  • 医学图像分割评判标准及程序代码

    文章目录 1 图像分割指标 2 两个问题 3 IOU和假阳性率 4 准确率 Accuracy 精确率 Precision 召回率 Recall 和F1 Measure 参考资源 1 https blog csdn net zichen zi
  • 关于获取项目在tomcat中的路径问题

    1 直接发请求 可以用下面的方式 ServletContext context ServletRequestAttributes RequestContextHolder getRequestAttributes getRequest ge
  • 如何安装管式土壤墒情监测仪?

    安装说明 在安装时 需选择地势相对较高且平坦的位置进行安装 这样即能防止雨水倒灌进设备内部从而引起设备短路或线路故障 还能保证监测数据的精准度 首先 我们先使用土钻竖直于地面进行打孔保证传感器放入 取出都比较顺畅 直到孔深与传感器所标识的安
  • 程序员如何培养领导力

    第一阶段 熟悉自己的业务 知道问题在哪里 怎样可以解决 领导者是给大家指方向的 你必须先知道要走哪个方向 才能带领别人 这是领导力的基础 第二阶段 培养说服能力 能说服他人 问题可以按照你说的方式解决 领导力的表现是 他人愿意服从你 这不能
  • 比较流行的编程语言

    流行的编程语言 1 C C语言诞生于1972年 可以称之为现代高级语言的鼻祖 由著名的贝尔实验室发明 C语言是人们追求结构化 模块化 高效率的 语言之花 在底层编程 比如嵌入式 病毒开发等应用 可以替代汇编语言来开发系统程序 在高层应用 也
  • MOS管应用之外接电源和电池供电的的双电源自动切换电路

    现在大部分电子产品都配有锂电池 在没有外接电源的时候 使用锂电池进行供电 当外接电源的时候 使用外部电源供电 同时对锂电池充电 因此要求电路必须具备能够根据是否接有外部电源 而自动选择相应供电电源的能力 常见的简单电源切换电路如图1所示 但
  • 16.echarts X轴像直尺一样设置刻度

    在做老师的项目的时候 老师让我们实现X轴的直尺刻度显示 网上查了查相关代码 大家都没有明确介绍 因此我在这里记录一下 自己的学习 先看实现效果 对echarts的xAxis yAxis这两个属性进行修改即可实现 xAxis 第一个 是原X轴
  • nodeMCU(ESP8266)和RC522的接线图

    文章目录 nodeMCU ESP8266 和RC522的接线图 参考文章 nodeMCU引脚图 nodeMCU 和 RC522接线图 示例代码 nodeMCU ESP8266 和RC522的接线图 参考文章 这篇应该是别人从国外论坛翻译过来
  • 腾讯翻译软件推荐

    相信大家学编程的时候 经常会需要进行官方文档的查阅 但是大部分的官方文档都是英文的 对于英文不是很好的朋友不是很友好 当然 如果英文较好的朋友最好尝试看英文 毕竟在写代码的时候翻译软件会把代码中的英文也翻译出来 下面我推荐一款腾讯翻译软件给
  • Web前端——HTML中的列表、表格、表单

    一 列表
  • 数据挖掘与数据分析的主要区别

    本文来自网易云社区 百科是这样定义数据挖掘和数据分析的 数据分析 是指用适当的统计分析方法对收集来的大量数据进行分析 提取有用信息和形成结论而对数据加以详细研究和概括总结的过程 这一过程也是质量管理体系的支持过程 在实用中 数据分析可帮助人
  • Java集合框架之Set集合简介

    和List集合一样 Set集合也是属于单列集合 同属于Collcetion集合体系下 List和Set都是单列集合 但是他们是存在区别的 List 有序 元素可重复的单列集合 Set 无序 元素不可重复的单列集合 Set和List集合一样属