当前位置: 首页 > news >正文

深入理解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常用方法 ①&#xff1a;add(Object o)&#xff1a;向Set集合中添加元素&#xff0c;不允许添加重复数据。 ②&#xff1a;size()&#xff1a;返回Set集合中的元素个数 ③.remove(Object o)&#xff1a; 删除Set集合中的obj对…...

Oracle 使用 sql profile 固定执行计划

测试使用 sql profile 固定执行计划&#xff1a; Oracle 10g之前有outlines,10g之后 sql profile 。如果针对非绑定变量的sql,outlines则效果不佳&#xff0c;不建议使用 。 1、准备测试用表 SQL> create table zzh_ob as select * from dba_objects; SQL> create inde…...

数字电路期末复习

*前言&#xff1a;*写的东西不太全面&#xff0c;更多的是一个复习大纲&#xff0c;让你发现自己有哪些不懂的问题&#xff08;不懂的地方就去翻书或者问AI&#xff09;&#xff0c;如果能够解决提出的所有问题&#xff0c;那么过期末考一定不是问题。 这里写目录标题 数制和码…...

正则表达式 - 使用总结

正则表达式 - 使用总结 正则表达式(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连接&#xff0c;需要确保系统上安装并运行了SSH服务器。SSH服务器负责接受来自其他计算机的SSH连接请求&#xff0c;并提供对目标系统的访问权限。 在Ubuntu上&#xff0c;默认情况…...

CESS 的 2024:赋能 AI,塑造去中心化数据基础

2024 年是加密与区块链行业的重要转折之年&#xff0c;行业在技术创新、监管明确和实际应用上取得了显著进展。全球范围内&#xff0c;多个国家相继推出加密货币和区块链技术的监管框架&#xff0c;美国的区块链政策峰会推动了关键议题的讨论&#xff0c;欧洲完成了 MiCA 监管的…...

Redission红锁

目录 一、什么是红锁 二、Redission红锁的使用 一、什么是红锁 Redis 的作者 Salvatore Sanfilippo&#xff08;又名 antirez&#xff09;提出的一种基于多个 Redis 实例实现分布式锁的算法。红锁&#xff08;Redlock&#xff09;旨在解决单点故障问题&#xff0c;即当使用单…...

使用 CSS 的 `::selection` 伪元素来改变 HTML 文本选中时的背景颜色

定义 ::selection 伪元素&#xff1a; 在你的 CSS 文件中&#xff0c;添加 ::selection 伪元素&#xff0c;并设置 background-color 属性来改变选中文本的背景颜色。 示例代码&#xff1a; ::selection {background-color: yellow; /* 你可以根据需要更改颜色 */color: black…...

Spring Boot AOP日志打印实现

在 Spring Boot 3.1.12 中使用 AOP 实现日志打印&#xff0c;记录前端传入的参数和后端返回的数据&#xff0c;可以按照以下步骤进行&#xff1a; 添加依赖 首先&#xff0c;确保你的 pom.xml 文件中包含了 Spring AOP 的依赖&#xff1a; <dependency><groupId>…...

Windows远程--如何使用IP访问服务器

1.第一步&#xff1a;在本地按下winR打开运行窗口&#xff0c;输入mstsc 打开window自带的远程桌面组件&#xff0c;在打开的窗口内输入公网ip。 2.第二步&#xff1a;输入远程电脑的登录用户名和密码&#xff0c;即可成功建立连接。...

vscode中设置默认格式化工具pretter

1. 安装 Prettier 插件 打开 VSCode 的扩展市场&#xff08;快捷键 CtrlShiftX 或点击左侧的扩展图标&#xff09;。 搜索并安装 Prettier - Code formatter 插件。 2. 设置 VSCode 使用 Prettier 格式化代码 打开 VSCode 的设置&#xff08;快捷键 Ctrl, 或点击右下角齿轮图标…...

Hadoop、Flink、Spark和Kafka

Hadoop、Flink、Spark和Kafka是大数据处理领域中的四个重要工具&#xff0c;它们在架构、数据处理方式以及性能等方面都存在区别。以下是具体分析&#xff1a; 架构 Hadoop&#xff1a;Hadoop的核心是HDFS&#xff08;Hadoop Distributed File System&#xff09;和MapReduce编…...

APP自动化测试元素定位及隐式等待

元素定位是UI自动化测试中最关键的一步&#xff0c;假如在自动化测试中没有定位到页面中素&#xff0c;也就无法完成对页面的测试操作。那么&#xff0c;我们在自动化测试中如何定位到是要部面元素呢&#xff1f; 下面聊一聊用 Appium 定位元素的方式。 定位页面元素有很多种…...

Element plus 的 upload 组件实现自定义上传

Element Plus 是一个基于 Vue 3 的 UI 组件库&#xff0c;提供了许多常用的 UI 组件。其中&#xff0c;Upload 组件用于文件上传功能。如果你想实现自定义上传逻辑&#xff0c;可以通过 before-upload 和 http-request 属性来实现。 以下是一个简单的示例&#xff0c;展示如何…...

力扣-数据结构-10【算法学习day.81】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;建议灵神的题单和代码随想录&#xff09;和记录自己的学习过程&#xff0c;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关…...

WPF的一些控件的触发事件记录

<c1:C1ComboBox Width"230" ItemsSource"{Binding ReplaceWayList}" Style"{StaticResource ListSearch-C1ComboBox}" SelectedValueChanged"C1ComboBox_SelectedValueChanged"&#xff0c; 下拉框事件&#xff0c;值改变事件&a…...

C# 设计模式(创建型模式):建造者模式

C# 设计模式&#xff08;创建型模式&#xff09;&#xff1a;建造者模式 引言 在软件开发中&#xff0c;创建型设计模式主要关注对象的创建方式&#xff0c;其中建造者模式&#xff08;Builder Pattern&#xff09;是非常重要的一种。建造者模式通过一步一步构建一个复杂对象…...

关于模板函数的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数据是&#xff1a; 原始的、修改之前的数据副本 是针对更改数据的每个事务处理所捕获的 至少保留到事务处理结束 用于支持&#xff1a; 回退操作 读取一致性查询 闪回查询、闪回事务处理和闪回表 从失败的事务处理中进行恢复 1.2. 事…...

双足机器人步态规划算法与动平衡控制【附仿真】

✨ 长期致力于双足机器人、步态规划、动平衡控制、运动发散分量、模型预测控制、二次优化、可视化仿真研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09…...

如何用QueryExcel轻松应对海量Excel文件搜索难题?免费工具让数据查找变得简单快速

如何用QueryExcel轻松应对海量Excel文件搜索难题&#xff1f;免费工具让数据查找变得简单快速 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 面对堆积如山的Excel文件&#xff0c;你是否曾为查找某个…...

QMCDump终极指南:3分钟学会QQ音乐加密文件转换,解锁你的音乐自由

QMCDump终极指南&#xff1a;3分钟学会QQ音乐加密文件转换&#xff0c;解锁你的音乐自由 【免费下载链接】qmcdump 一个简单的QQ音乐解码&#xff08;qmcflac/qmc0/qmc3 转 flac/mp3&#xff09;&#xff0c;仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/…...

从STK仿真到链路决策:低轨卫星网络静态拓扑构建实战解析

1. 低轨卫星网络静态拓扑基础认知 第一次接触卫星网络拓扑时&#xff0c;我被各种专业术语绕得头晕。直到把STK软件里的卫星模型调出来&#xff0c;看着那些在三维空间规律运转的小圆点&#xff0c;才真正理解什么是静态拓扑。简单来说&#xff0c;就是在不考虑卫星实时运动的情…...

原创丨全球主流开源模型及其衍生生态解析

作者&#xff1a;李媛媛 本文约4800字&#xff0c;建议阅读15分钟本文介绍了全球主流开源基座模型及衍生模型的特点、应用与趋势。在人工智能技术产业化落地加速的当下&#xff0c;开源模型已成为推动行业创新的核心力量&#xff0c;其开放、可定制的特性打破了技术壁垒&#x…...

从 API 密钥管理角度看 Taotoken 控制台提供的安全与便捷性

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 从 API 密钥管理角度看 Taotoken 控制台提供的安全与便捷性 1. 引言&#xff1a;集中管理的起点 在开发涉及大模型的应用时&#…...

TouchGFX SPI屏移植避坑全记录:从下载算法到分散加载.sct文件

TouchGFX SPI屏移植实战&#xff1a;破解下载算法与分散加载的三大技术难点 当一块240x320的SPI接口屏幕在STM32F412RET6上流畅渲染出60帧的TouchGFX界面时&#xff0c;我盯着示波器上稳定的时序信号长舒一口气——这已经是本周第三次重写W25Q64的下载算法。与官方文档描述的&…...

NotebookLM去重效率翻3倍:实测验证的7步精准过滤工作流

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM去重效率翻3倍&#xff1a;实测验证的7步精准过滤工作流 NotebookLM 原生未提供批量文本去重能力&#xff0c;但通过组合其 API 与本地预处理策略&#xff0c;可构建高精度、低延迟的语义级去…...

CursorLearn2API:基于AI辅助编程的本地代码自动化部署为云端API实践

1. 项目概述&#xff1a;从本地代码到云端API的自动化桥梁最近在折腾一个挺有意思的项目&#xff0c;叫gmh5225/cursorlearn2api。乍一看这个标题&#xff0c;可能有点摸不着头脑&#xff0c;但如果你是一个经常在本地用 Cursor 这类 AI 辅助编程工具写代码&#xff0c;同时又想…...

面试题详解:GraphRAG 全面解析——知识图谱增强 RAG、Local Search、Global Search、社区摘要、工程落地与评估指标一次讲透

一、什么是 GraphRAG&#xff1f;1.1 先用一句话讲清楚GraphRAG 可以理解为&#xff1a;在传统 RAG 的基础上&#xff0c;把文档里的实体、关系、事件和主题组织成一张图&#xff0c;再利用这张图来增强检索和生成。普通 RAG 更像“在文档块里找相似内容”&#xff0c;GraphRAG…...