[数据结构] Set的使用与注意事项
目录
Set的说明
常见方法说明
注意事项
TreeSet使用案例
Set的说明
Set与Map主要的不同有两点: Set是继承自Collection的接口类,Set中只存储了Key.
常见方法说明
| 方法 | 解释 |
| boolean add(E e) | 添加元素,但重复元素不会被添加成功 |
| void clear() | 清空集合 |
| boolean contains(Object o) | 判断o是否在集合中 |
| Iterator<E> iterator() | 返回迭代器 |
| boolean remove(Object o) | 删除集合中的o |
| int size() | 返回集合中元素的个数 |
| boolean isEmpty() | 检测set是否为空,空返回true,否则返回false |
| Object[] toArray() | 将set中的元素转换为数组返回 |
| boolean containsAll(Collection<?> c | 集合c中的元素是否在set中全部存在,是返回true,否则返回false |
| boolean addAll(Collection<? extends E> c) | 将集合c中的元素添加到set中,可以达到去重的效果 |
注意事项
- Set是继承自Collection的一个类接口
- Set中只存储了Key,并且要求key一定要唯一(key不可以重复)
- TreeSet的底层是使用Map来实现的, 其使用key与Object的一个默认对象作为键值对插入到Map中的
- Set最大的功能就是对集合中的元素进行去重
- 实现Set接口的常用类有TreeSet和HashSet, 还有一个LinkedHashSet, LinkedHashSet是在HashSet的基础上维护了一个双向链表来记录元素的插入次序.
- Set中的key不能修改,如果要修改,先将原来的删除掉, 然后再重新加入
- TreeSet中不能插入null的key,HashSet可以.
| Set底层结构 | TreeSet | HashSet |
| 底层结构 | 红黑树 | 哈希桶 |
| 插入/删除/查找时间复杂度 | O(1) | |
| 是否有序 | 关于key有序 | 不一定有序 |
| 线程安全 | 不安全 | 不安全 |
| 插入/删除/查找区别 | 按照红黑树的特性来进行插入和删除 | 1.先计算key哈希地址 2.然后进行插入和删除 |
| 比较与覆写 | key必须能够比较,否则会抛出ClassCastExcetion异常 | 自定义类型需要覆写equals和hashCode方法 |
| 应用场景 | 需要key有序场景下 | key是否有序不关心,需要更高的时间性能 |
TreeSet使用案例
public static void TestSet() {Set<String> s = new TreeSet<>();// add(key) : 如果key不存在,则插入,返回true;// 如果key存在,返回falseboolean isIn = s.add("1");System.out.println(isIn);s.add("2");s.add("3");s.add("4");s.add("5");isIn = s.add("1");System.out.println(isIn);System.out.println(s.size());System.out.println(s);// add(key): key如果是空,抛出空指针异常// s.add(null);//contains(key): 如果key存在,返回true,否则返回falseSystem.out.println(s.contains("1"));System.out.println(s.contains("10"));// remove(key): key存在,删除成功返回true// key不存在,删除失败,返回false// key为空,抛出空指针异常s.remove("1");System.out.println(s);s.remove("10");System.out.println(s);Iterator<String> it = s.iterator();while(it.hasNext()) {System.out.println(it.next() + " ");}System.out.println();}相关文章:
[数据结构] Set的使用与注意事项
目录 Set的说明 常见方法说明 注意事项 TreeSet使用案例 Set的说明 Set与Map主要的不同有两点: Set是继承自Collection的接口类,Set中只存储了Key. 常见方法说明 方法解释boolean add(E e)添加元素,但重复元素不会被添加成功void clear()清空集合boolean contains(Object…...
安当SLA操作系统登录双因素认证:全方位保障Windows系统登录安全
一、产品概述 在当今数字化时代,Windows系统面临着诸多安全挑战,如弱口令问题等。安当SLA(System Login Agent)作为一款强大的双因素登录认证产品,通过支持OTP动态口令和USBKey硬件令牌认证,有效解决多种W…...
Java学习进阶路线
Java基础 Java Web 前端HTML/css/js,J2EE(Servlet/jsp),数据库(Mysql/oracle) Java开发框架 Spring MVC/Mybatis/Herbernate/maven 《Java编程思想》 深入了解java基础 Java设计模式 《Effective j…...
操作系统|ARM和X86的区别,存储,指令集
文章目录 主频寄存器寄存器在硬件中的体现是什么寄存器的基本特性硬件实现寄存器类型 内存和寄存器的区别内存(Memory)和磁盘(Disk)指令的执行ARM Cortex-M3与Thumb-2指令集Thumb-2 与流水线虚拟地址指令的执行 多核CPU芯片间的通…...
Mp4视频播放机无法播放视频-批量修改视频分辨率(帧宽、帧高)
背景 家人有一台夏新多功能 视频播放器(夏新多功能 视频播放器),用来播放广场舞。下载了一些广场舞视频, 只有部分视频可以播放,其他视频均无法播放,判断应该不是帧速率和数据速率的限制, 分析可能是播放器不支持帧高度大于720的视频。由于视频文件较多,需要借助视频编…...
日语学习-日语知识点小记-构建基础-JLPT-N4&N5阶段(2):どれ・どの・どんな :区别 等
日语学习-日语知识点小记-构建基础-JLPT-N4&N5阶段(2):どれ・どの・どんな :区别 等 1、前言(1)情况说明(2)工程师的信仰2、知识点(1)知识点な形容詞(けいようし) と い形容詞(けいようし):并列修饰(2)知识点どれ・どの・どんな :区别(3)知识点は &…...
【浏览器多开】Google Chrome 谷歌浏览器分身术
谷歌浏览器分身术(多开): 复制已有谷歌浏览器图标—>右键–>属性的目标栏中,添加 --user-data-dir自定义文件夹路径 参数。 例如: C:\MySpace\02Installed\Chrome\Chrome-bin\99.0.4844.51\chrome.exe –user-d…...
《LeetCode Hot100》 Day01
Day01 轮转数组 思路: (1) 使用O(1) 空间复杂度解决,就需要原地解决,不能创建新的数组。 (2) 先整体反转数组,再反转前k个数,再反转剩下的数。即可完整本题。 &…...
【图片合并转换PDF】如何将每个文件夹下的图片转化成PDF并合并成一个文件?下面基于C++的方式教你实现
医院在为患者进行诊断和治疗过程中,会产生大量的医学影像图片,如 X 光片、CT 扫描图、MRI 图像等。这些图片通常会按照检查时间或者检查项目存放在不同的文件夹中。为了方便医生查阅和患者病历的长期保存,需要将每个患者文件夹下的图片合并成…...
uniapp实现人脸识别(不使用三方插件)
uniapp实现人脸识别 内容简介功能实现上传身份证进行人脸比对 遇到的问题 内容简介 1.拍摄/相册将身份证照片上传到接口进行图片解析 2.使用live-pusher组件拍摄人脸照片,上传接口与身份证人脸进行比对 功能实现 上传身份证 先看下效果 点击按钮调用chooseImage…...
2025全新JSP简约博客平台-免费开源
前言 最近收到不少同学期末作业的需求,都还是JSP的老技术,介于现在很多网上可以找到的JSP现有项目,要么就是很老好几年前的,要么就是搞了一通不仅乱码还各自报错失败的,总之就是资源有限,于是我花了一星期…...
计算机视觉语义分割——Attention U-Net(Learning Where to Look for the Pancreas)
计算机视觉语义分割——Attention U-Net(Learning Where to Look for the Pancreas) 文章目录 计算机视觉语义分割——Attention U-Net(Learning Where to Look for the Pancreas)摘要Abstract一、Attention U-Net1. 基本思想2. Attention Gate模块3. 软注意力与硬注意力4. 实验…...
基于SpringBoot的“4S店车辆管理系统”的设计与实现(源码+数据库+文档+PPT)_2025-02-10
基于SpringBoot的“4S店车辆管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 系统登录界面图 管理员功能界…...
ESP-IDF学习记录(6)
这篇不知道起什么标题,因为已经卡滞很久了,从年前到现在,但也没停止探索 1.烧录 用的小型加热台,这步对我来说最难,自己没有焊接过QFN32的封装 总结一下目前遇到的问题: 1)5V供电选成了12V转…...
Day84:数据可视化
数据可视化是数据分析的重要组成部分,它能直观地展现数据规律,使复杂数据变得易懂。Python 提供了多个数据可视化库,其中最常用的是 Matplotlib 和 Seaborn。今天,我们将学习如何使用这些工具绘制折线图、柱状图、散点图等。 1. 安装和导入库 如果你的 Python 没有安装 Ma…...
【机器学习与数据挖掘实战】案例13:基于BP神经网络模型的家用热水器用户行为分析与事件识别
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支,专注于让计算机系统通过数据学习和改进。它利用统计和计算方法,使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数…...
数据结构 动态顺序表-vector
一、创建vector #include <vector> // 头⽂件 using namespace std; const int N 20; struct node {int a, b, c; }; // 1. 创建 void init() {vector<int> a1; // 创建⼀个空的可变⻓数组 vector<int> a2(N); // 指定好了⼀个空间,⼤⼩为 N …...
Windows 植物大战僵尸杂交版
植物大战僵尸杂交版 链接:https://pan.xunlei.com/s/VOIjttp8EzfL9fXO6S6ekvZYA1?pwdw8cm# 作者: B站UP主 潜艇伟伟迷...
【学习笔记】计算机网络(三)
第3章 数据链路层 文章目录 第3章 数据链路层3.1数据链路层的几个共同问题3.1.1 数据链路和帧3.1.2 三个基本功能3.1.3 其他功能 - 滑动窗口机制 3.2 点对点协议PPP(Point-to-Point Protocol)3.2.1 PPP 协议的特点3.2.2 PPP协议的帧格式3.2.3 PPP 协议的工作状态 3.3 使用广播信…...
SpringBoot和Spring主要区别
SpringBoot和Spring主要区别 1. 核心定位2. 配置方式3. 依赖管理4. 内嵌服务器5. 开发效率6. 监控与管理7. 适用场景8. 总结 Spring Boot 和 Spring 是 Java 生态中密切相关的两个框架,但它们的定位和使用场景有明显区别。以下是主要区别: 1. 核心定位 S…...
Blazor-<select>
今天我们来说说<select>标签的用法,我们还是从一个示例代码开始 page "/demoPage" rendermode InteractiveAuto inject ILogger<InjectPage> logger; <h3>demoPage</h3> <select multiple>foreach (var item in list){<…...
力扣-数组-20 有效的括号
思路 有效的括号符合栈的思想,先进后出 代码 class Solution { public:bool isValid(string s) {stack <char> sign;sign.push(s[0]);for(int i 1; i < s.size(); i){if(s[i] { || s[i] [ || s[i] (){sign.push(s[i]);}else if(s[i] } && …...
Best practice-ThreadLocal高并发场景的最佳实践
关于ThreadLocal基础信息 引用一段来自ThreadLocal源码中的doc注释来说明其特性: This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its get or set method) has …...
WiFi配网流程—SmartConfig 配网流程
目录 📌 SmartConfig 配网流程 👉 阶段 1:设备进入配网模式 👉 阶段 2:手机 App 发送 Wi-Fi 配置信息 👉 阶段 3:设备解析 Wi-Fi 配置,连接家庭网络 👉 阶段 4&…...
【鸿蒙HarmonyOS Next实战开发】多媒体视频播放-GSYVideoPlayer
简介 GSYVideoPlayer是一个视频播放器库,支持切换内核播放器(IJKPlayer、avplayer),并且支持视频截图能力、 视频生成gif能力、边播边缓存能力、视频全屏能力等多种能力。 效果展示: 下载安装 ohpm install ohos/gs…...
IDEA中常见问题汇总
🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…...
基于蜘蛛蜂优化算法的无人机集群三维路径规划Matlab实现
代码下载:私信博主回复基于蜘蛛蜂优化算法的无人机集群三维路径规划Matlab实现 《基于蜘蛛蜂优化算法的无人机集群三维路径规划》 摘要 本研究针对无人机集群三维路径规划问题,提出了一种基于蜘蛛蜂优化算法的解决方案。以5个无人机构成的集群为研究对…...
React中使用useReducer高阶钩子来管理状态
在React开发中,状态管理是一个重要的概念。useState钩子用于管理简单的局部状态,但对于复杂的状态逻辑,useReducer钩子提供了更强大和灵活的解决方案。本文将详细介绍如何在React中使用 useReducer高阶钩子来管理状态。 一、useReducer概述 …...
一步一步生成音乐类小程序的详细指南,结合AI辅助开发的思路
以下是一步一步生成音乐类小程序的详细指南,结合AI辅助开发的思路: 需求分析阶段核心功能梳理 音乐播放器(播放/暂停/进度条/音量)歌单分类(流行/古典/摇滚等)用户系统(登录/收藏/历史记录)搜索功能(歌曲/歌手/专辑)推荐系统(根据用户偏好推荐)技术选型 前端:微信…...
聚类算法概念、分类、特点及应用场景【机器学习】【无监督学习】
概念 机器学习聚类算法是一种无监督学习方法,旨在将数据集分割成不同的类或簇,使得同一簇内的数据对象相似性尽可能大,而不同簇之间的数据对象差异性也尽可能大。聚类算法广泛应用于新闻自动分组、用户分群、图像分割等领域。 主要聚类算…...
