深入理解Java中的Set集合:特性、用法与常见操作指南
一、HashSet集合
1.HashSet集合的特点

2.HashSet常用方法
①:add(Object o):向Set集合中添加元素,不允许添加重复数据。
②:size():返回Set集合中的元素个数
③.remove(Object o): 删除Set集合中的obj对象,删除成功返回true,否则返回false。
④.isEmpty():如果Set不包含元素,则返回 true。
⑤.clear(): 移除此Set中的所有元素。
⑥.iterator():返回在此Set中的元素上进行迭代的迭代器。
⑦.contains(Object o):判断集合中是否包含obj元素。
⑧:加强for循环遍历Set集合:
二、LinkedHashSet集合
LinkedHashSet集合的特点

三、TreeSet集合
1.TreeSet集合的特点

2.TreeSet的基本使用
①.插入是按字典序排序的
public class Test {public static void main(String[] args) {TreeSet ts=new TreeSet();ts.add("agg");ts.add("abcd");ts.add("ffas");Iterator it=ts.iterator();while(it.hasNext()) {System.out.println(it.next());}}
}
输出 : 按照字典序排序的方式进行排序
abcd agg ffas
②.如果插入的是自定义对象 需要让类实现 Comparable 接口并且必须要重写compareTo
class Person implements Comparable{String name;int age;Person(String name,int age){this.name=name;this.age=age;}@Overridepublic int compareTo(Object o) {Person p=(Person)o;//先对姓名字典序比较 如果相同 比较年龄if(this.name.compareTo(p.name)!=0) {return this.name.compareTo(p.name);}else{if(this.age>p.age) return 1;else if(this.age<p.age) return -1;}return 0;}}public class Test {public static void main(String args[]){TreeSet ts=new TreeSet();ts.add(new Person("agg",21));ts.add(new Person("abcd",12));ts.add(new Person("ffas",8));ts.add(new Person("agg",12));Iterator it=ts.iterator();while(it.hasNext()){Person p=(Person)it.next();System.out.println(p.name+":"+p.age);}}
}
输出
abcd:12 agg:12 agg:21 ffas:8
四、HashSet、LinkedHashSet、TreeSet的使用场景
HashSet:HashSet的性能基本上比LinkedHashSet和TreeSet要好,特别是添加和查询,这也是用的最多的两个操作
LinkedHashSet:LinkedHashSet的查询稍慢一些,但是他可以维持元素的添加顺序。所以只有要求当插入顺序和取出顺序一致的时候 才使用LinkedHashSet。
TreeSet:只有在需要对元素进行排序时使用
五、list和set集合的区别

相关文章:
深入理解Java中的Set集合:特性、用法与常见操作指南
一、HashSet集合 1.HashSet集合的特点 2.HashSet常用方法 ①:add(Object o):向Set集合中添加元素,不允许添加重复数据。 ②:size():返回Set集合中的元素个数 ③.remove(Object o): 删除Set集合中的obj对…...
Oracle 使用 sql profile 固定执行计划
测试使用 sql profile 固定执行计划: Oracle 10g之前有outlines,10g之后 sql profile 。如果针对非绑定变量的sql,outlines则效果不佳,不建议使用 。 1、准备测试用表 SQL> create table zzh_ob as select * from dba_objects; SQL> create inde…...
数字电路期末复习
*前言:*写的东西不太全面,更多的是一个复习大纲,让你发现自己有哪些不懂的问题(不懂的地方就去翻书或者问AI),如果能够解决提出的所有问题,那么过期末考一定不是问题。 这里写目录标题 数制和码…...
正则表达式 - 使用总结
正则表达式 - 使用总结 正则表达式(Regular Expression,简称Regex)是一种强大的文本处理工具,它允许我们通过特定的模式(pattern)来搜索、匹配和操作字符串。在编程、数据分析和文本处理等领域,正则表达式发挥着非常重要的作用。本文将总结正则表达式的基本概念、使用方…...
通过Xshell远程连接wsl2
目录 一、WSL网络原理 二、 下载XShell 三、Ubuntu里配置ssh 1.查看是否已经安装SSH 2.安装SSH 3.修改SSH配置 4.重启ssh 5.查看ip 四、在Xshell中链接电脑 五、设置端口转发 1.设置主机端口映射到wsl2的端口 六、防火墙设置开放8989端口 方式一(推荐): 方式二:…...
【ubuntu】安装OpenSSH服务器
参考:https://blog.csdn.net/fanjufei123456/article/details/139264814 要在Ubuntu上使用SSH连接,需要确保系统上安装并运行了SSH服务器。SSH服务器负责接受来自其他计算机的SSH连接请求,并提供对目标系统的访问权限。 在Ubuntu上,默认情况…...
CESS 的 2024:赋能 AI,塑造去中心化数据基础
2024 年是加密与区块链行业的重要转折之年,行业在技术创新、监管明确和实际应用上取得了显著进展。全球范围内,多个国家相继推出加密货币和区块链技术的监管框架,美国的区块链政策峰会推动了关键议题的讨论,欧洲完成了 MiCA 监管的…...
Redission红锁
目录 一、什么是红锁 二、Redission红锁的使用 一、什么是红锁 Redis 的作者 Salvatore Sanfilippo(又名 antirez)提出的一种基于多个 Redis 实例实现分布式锁的算法。红锁(Redlock)旨在解决单点故障问题,即当使用单…...
使用 CSS 的 `::selection` 伪元素来改变 HTML 文本选中时的背景颜色
定义 ::selection 伪元素: 在你的 CSS 文件中,添加 ::selection 伪元素,并设置 background-color 属性来改变选中文本的背景颜色。 示例代码: ::selection {background-color: yellow; /* 你可以根据需要更改颜色 */color: black…...
Spring Boot AOP日志打印实现
在 Spring Boot 3.1.12 中使用 AOP 实现日志打印,记录前端传入的参数和后端返回的数据,可以按照以下步骤进行: 添加依赖 首先,确保你的 pom.xml 文件中包含了 Spring AOP 的依赖: <dependency><groupId>…...
Windows远程--如何使用IP访问服务器
1.第一步:在本地按下winR打开运行窗口,输入mstsc 打开window自带的远程桌面组件,在打开的窗口内输入公网ip。 2.第二步:输入远程电脑的登录用户名和密码,即可成功建立连接。...
vscode中设置默认格式化工具pretter
1. 安装 Prettier 插件 打开 VSCode 的扩展市场(快捷键 CtrlShiftX 或点击左侧的扩展图标)。 搜索并安装 Prettier - Code formatter 插件。 2. 设置 VSCode 使用 Prettier 格式化代码 打开 VSCode 的设置(快捷键 Ctrl, 或点击右下角齿轮图标…...
Hadoop、Flink、Spark和Kafka
Hadoop、Flink、Spark和Kafka是大数据处理领域中的四个重要工具,它们在架构、数据处理方式以及性能等方面都存在区别。以下是具体分析: 架构 Hadoop:Hadoop的核心是HDFS(Hadoop Distributed File System)和MapReduce编…...
APP自动化测试元素定位及隐式等待
元素定位是UI自动化测试中最关键的一步,假如在自动化测试中没有定位到页面中素,也就无法完成对页面的测试操作。那么,我们在自动化测试中如何定位到是要部面元素呢? 下面聊一聊用 Appium 定位元素的方式。 定位页面元素有很多种…...
Element plus 的 upload 组件实现自定义上传
Element Plus 是一个基于 Vue 3 的 UI 组件库,提供了许多常用的 UI 组件。其中,Upload 组件用于文件上传功能。如果你想实现自定义上传逻辑,可以通过 before-upload 和 http-request 属性来实现。 以下是一个简单的示例,展示如何…...
力扣-数据结构-10【算法学习day.81】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关…...
WPF的一些控件的触发事件记录
<c1:C1ComboBox Width"230" ItemsSource"{Binding ReplaceWayList}" Style"{StaticResource ListSearch-C1ComboBox}" SelectedValueChanged"C1ComboBox_SelectedValueChanged", 下拉框事件,值改变事件&a…...
C# 设计模式(创建型模式):建造者模式
C# 设计模式(创建型模式):建造者模式 引言 在软件开发中,创建型设计模式主要关注对象的创建方式,其中建造者模式(Builder Pattern)是非常重要的一种。建造者模式通过一步一步构建一个复杂对象…...
关于模板函数的void返回值的判断:std::is_void与模板特化
int返回值的函数参数测试 #include <iostream> #include <functional>int return_int_func(){std::cout << __func__ << std::endl << std::flush;return 10086; }template<class U> auto CallDeviceMethodShort(std::function<U()&g…...
重现ORA-01555 细说Oracle Undo 数据管理
1. 概述 1.1. Undo 数据应用 undo数据是: 原始的、修改之前的数据副本 是针对更改数据的每个事务处理所捕获的 至少保留到事务处理结束 用于支持: 回退操作 读取一致性查询 闪回查询、闪回事务处理和闪回表 从失败的事务处理中进行恢复 1.2. 事…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
