List与Set的区别
List与Set的区别
大家好,在我们平时的代码编写过程中,经常会碰到需要使用到集合类型: List与Set。很多时候,我们可能会将它们视为同一种类型进行使用,但是在实际的编程逻辑中,它们之间是存在很大差别的。接下来我们就将对这两种类型进行详细的深入解析。
下面的描述中主要针对常用的ArrayList和HashSet。
List与Set简介
在Java和Python等主流编程语言中,List和Set都是集合类型。
-
List是一种有序的集合类型,它可以包含重复的元素。在List中,每个元素都有一个与之对应的索引。
-
Set是一种无序的集合类型,不包含重复的元素。它没有索引和排序,只关注元素存在的问题。
List与Set的原理解析
List的特点
- 有序性:List中的元素在内存中是连续的,因此每个元素都有其对应的索引值。
- 可重复性:List中的元素可以重复,因为每个元素独立的存储其引用地址,因此引用地址可以重复。
Set的特点
- 无序性:Set中的元素在内存中是散乱的,因此其没有索引值。
- 不可重复:Set中的元素不能重复,因为Set的底层主要使用的是HashMap。
public HashSet() {map = new HashMap<>();}public boolean add(E e) {return map.put(e, PRESENT)==null;}
List和Set的性能比较
使用List和Set进行数据操作,效率上会有显著的差距。
- 对于查找和删除操作,Set的性能要优于List,因为对于Set的这两种操作,只需要查看哈希表的几个位置就可以完成,而对于List来说,需要遍历整个List。
- 对于插入和索引元素的操作,List的性能要优于Set,因为List直接插入到指定位置,而Set需要通过哈希函数计算插入的位置。
示例代码
这是一个Java代码片段,用于演示List和Set的不同之处:
import java.util.*;public class ListSetTest {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("apple");System.out.println(list); // 输出:[apple, banana, apple]Set<String> set = new HashSet<>();set.add("apple");set.add("banana");set.add("apple");System.out.println(set); // 输出:[apple, banana]}
}
上述代码清晰的展示了List的有序可重复特性以及Set的无序不可重复特性。
总结:List和Set虽然都是集合类型,但它们各自的特性和用途大不相同,需要根据具体的应用场景合理选择。
相关文章:
List与Set的区别
List与Set的区别 大家好,在我们平时的代码编写过程中,经常会碰到需要使用到集合类型: List与Set。很多时候,我们可能会将它们视为同一种类型进行使用,但是在实际的编程逻辑中,它们之间是存在很大差别的。接下来我们就…...
MyBatis 实战指南:探索灵活持久化的艺术
文章目录 前言一、初识 MyBatis1.1 什么是 MyBatis1.2 为什么学习 MyBatis 二、MyBatis 在软件开发框架中的定位三、基于 Spring Boot 创建 MyBatis 项目3.1 添加 MyBatis 框架的支持3.2 配置数据库连接信息和映射文件的保存路径(Mapper XML) 四、MyBati…...
高中教师能去美国做访问学者吗?
美国作为世界上高等教育水平较高的国家之一,吸引了众多学者前往交流学习。那么高中教师是否能够成为美国访问学者,这是当然的,高中老师是可以出国访学的,但是出国做访问学者会涉及到多方面的因素。 首先,教师个人的学术…...
93 | Python 设计模式 —— 建造者模式
文章目录 什么是建造者模式?建造者模式的四个角色Python建造者模式示例建造者模式的优点建造者模式的适用场景案例1:股票价格监控案例2:天气预报系统总结当构建复杂对象时,经常会遇到对象的创建过程非常复杂、包含多个步骤、或者有不同的配置选项。这时,使用建造者模式是一…...
nacos升级开启鉴权后,微服务无法连接的解决方案
版本: 软件版本号备注spring boot2.2.5.RELEASEspring-cloudHoxton.SR3spring-cloud-alibaba2.2.1.RELEASEnacos2.0.1从1.4.2版本进行升级。同时作为注册中心和配置中心 一、升级nacos版本,开启鉴权 1.在application.properties配置文件开启鉴权&…...
elementui弹窗页按钮重复提交问题解决
一、BUG场景 ruoyi平台,页面弹出窗有提交按钮,在提交时连续多次点击会发生重复提交。 二、错误方案 给按钮增加 :loading"submitLoading" 属性。 <el-dialog :title"title" :v-if"open" :visible.sync"open&…...
HBase-读流程
创建连接同写流程。 (1)读取本地缓存中的Meta表信息;(第一次启动客户端为空) (2)向ZK发起读取Meta表所在位置的请求; (3)ZK正常返回Meta表所在位置&#x…...
Matlab绘图 图例legend 太长,怎么减小指示线的长度
来源 绘图时,稍微减小文字已经不能正常放下图例,想通过调整图例指示线段长度缩减整个图例长度。 方法一 参考matlab官方论坛 leg legend(Plot1,Plot2,...); leg.ItemTokenSize [x1,x2]; By default x130 and x218 so put larger or smaller number…...
力扣17(电话号码中的字符组合)
题目表述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例1 输入:digits "23" 输出࿱…...
vue+element 下载压缩包和导出
export function goodsInspectionReportDwnloadZip (params) {return axios({url: "/warehouse-entry-server/v1/goodsInspectionReport/downloadZip",method: "get",params,responseType: "blob"}) } //下载handleDownloadFile() {if (!this.$r…...
构建Docker容器监控系统 (1)(Cadvisor +InfluxDB+Grafana)
目录 Cadvisor InfluxDBGrafana 1. Cadvisor 2.InfluxDB 3.Grafana 开始部署: 下载组件镜像 创建自定义网络 创建influxdb容器 创建数据库和数据库用户 创建Cadvisor 容器 准备测试镜像 创建granafa容器 访问granfana 添加数据源 Add data source 新建 …...
hive编译报错整理
背景 最近在修hive-1.2.0的一个bug,需要修改后重新打包部署到集群,打包的时候报下面的错误,原因很简单,从远程仓库里面已经拉不到这个包了。 org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde was not found in http…...
centos磁盘爆满可以清理mysql-bin.000011吗
mysql-bin.000011 是 MySQL 的二进制日志文件,用于记录数据库中的更改操作。删除该文件可能会导致数据库恢复、备份和复制等功能的中断或数据丢失。因此,在删除任何 MySQL 的二进制日志文件之前,请确保您了解其潜在影响并采取适当的备份措施。…...
SSM个人博客项目
文章目录 SSM个人博客系统实现项目介绍 一、准备工作0. 创建项目添加对应依赖1. 数据库设计2. 定时实体类 二、功能实现1.统一功能处理统一返回格式统一异常处理定义登录拦截器 2. 注册登录实现生成获取验证码密码加盐实现注册功能登录功能注销功能 3.登录用户博客列表获取登录…...
vue插槽是什么?如何使用?
1、意义 插槽是vue提供的一个内置组件,是一个占位符。作用是可以向组件中传递一段html代码,加强了组件封装性以及复用性。 2、分类 插槽通常分为匿名插槽、具名插槽、作用域插槽 匿名插槽: 顾名思义就是没有名字的插槽,我们通…...
yum常用操作命令
目录 查询命令 查看当前所有仓库 检查可升级的程序 安装、卸载、升级 清除缓存命令 生成缓存 查询命令 列出已安装的软件包:yum list installed列出仓库中还未安装的软件包:yum list available列出指定软件包的依赖关系:yum deplist &…...
.Net C# 免费PDF合成软件
最近用到pdf合成,发现各种软件均收费啊,这个技术非常简单,别人写好的库一大把,这里用到了PDFsharp,项目地址Home of PDFsharp and MigraDoc Foundation 软件下载地址 https://download.csdn.net/download/g313105910…...
JAVA集合框架 一:Collection(LIst,Set)和Iterator(迭代器)
目录 一、Java 集合框架体系 1.Collection接口:用于存储一个一个的数据,也称单列数据集合(single)。 2.Map接口:用于存储具有映射关系“key-value对”的集合(couple) 3.Iterator接口&#…...
python ffmpeg合并ts文件
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:点击跳转 当你从网站下载了一集动漫,然后发现是一堆ts文件,虽然可以打开,但是某个都是10秒左右,…...
c++map和set剖析
文章参考文献:cplusplus 博主:拖拉机厂第一代码手 gitee:拖拉机厂第一代码手 c专栏:C 目录 🧙🏼♂set剖析🧚🏼set简介🧚🏼set模板参数列表🧚🏼s…...
Qwen3.5-2B轻量化多模态模型Python入门实战:零基础快速上手AI开发
Qwen3.5-2B轻量化多模态模型Python入门实战:零基础快速上手AI开发 1. 开篇:为什么选择Qwen3.5-2B入门AI开发 如果你刚接触AI开发,可能会被各种复杂的模型和术语吓到。Qwen3.5-2B是个不错的起点——它足够轻量,能在普通GPU上运行…...
Linux中的more 和 less区别对比分析
在 Linux/Unix 系统中,more 和 less 都是用于分页查看文本文件的命令,但 less 是 more 的增强版,功能更强大。以下是它们的核心区别和用法对比:1. 基础功能对比特性moreless(更强大)向前翻页❌ 仅支持向下翻…...
零售AI开发者必看:Ostrakon-VL-8B终端从部署到任务执行完整指南
零售AI开发者必看:Ostrakon-VL-8B终端从部署到任务执行完整指南 1. 项目概览:像素特工终端 Ostrakon-VL-8B是一款专为零售与餐饮场景优化的多模态大模型,我们将其封装成了一个充满游戏趣味的Web交互终端。与传统工业级UI不同,这…...
C++的std--chrono时间库与steady_clock在性能测量中的正确使用
在C高性能程序开发中,精确测量代码执行时间是优化和调试的关键环节。std::chrono时间库作为现代C的标准工具,提供了高精度、类型安全的计时能力,其中steady_clock因其单调递增的特性成为性能测量的首选。本文将深入解析其正确使用方式&#x…...
基于STM32LXXX的数字电位器(MCP4017T-103E/LT)驱动应用程序设计
一、简介:MCP4017T-103E/LT 是 Microchip 公司推出的一款 7位(128抽头)数字电位器,采用 IC 接口控制。二、主要技术特性:参数值电阻值 (R_AB)10 kΩ抽头数128 (7-bit)接口IC (支持 Standard/ Fast Mode, 从机模式)存储…...
手把手玩转三相SPWM逆变器
三相电压型SPWM逆变器控制设计及应用(原理图工程源代码工 10067-三相电压型SPWM逆变器控制设计及应用(原理图工程源代码工程仿真工程详细说明书PPT) 随着国家电网的发展,国明对于电网的使用要求越来越高,并且家家户户均…...
单片机与手机远距离通信技术方案全解析
1. 单片机与手机远距离通信的技术方案解析在物联网和智能硬件开发领域,单片机与手机的远程通信是一个基础但至关重要的技术需求。作为一名嵌入式开发工程师,我参与过多个需要远程通信的智能硬件项目,从智能家居设备到工业监测终端,…...
折腾光纤模型的手记
comsol仿真-W型光子晶体光纤色散与损耗分析效果展示最近在实验室被导师催着搞光子晶体光纤的仿真,W型结构这种带双包层设计的玩意儿确实有点意思。作为COMSOL萌新,边啃说明书边试错,折腾一周终于把色散曲线和损耗谱给整明白了。先说建模这个重…...
针对双SMC控制的四轮转向轨迹跟踪模型优化与效果评估研究
四轮转向4WS轨迹跟踪控制模型 采用双SMC控制 4WS通过积分滑模控制跟踪期望横摆角速度和质心侧偏角,效果很好~ 轨迹跟踪为双移线输入,采用积分滑模控制 【特别说明】 是针对两篇论文的控制进行复现哦~ 提供参考文献及模型文件 最近在复现四轮转向轨迹跟踪…...
3D 效果与深度:现代 UI 设计的立体革命
3D 效果与深度:现代 UI 设计的立体革命探索如何在 2024 年通过 CSS 和 Flutter 实现令人惊叹的 3D UI 效果,为用户界面增添深度和层次感。一、3D 设计的崛起 在当今的数字设计领域,平面化设计已经不再是唯一的选择。随着硬件性能的提升和浏览…...
