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

java set和list集合知识

Java集合框架中,Set与List作为Collection接口的两大重要实现类,因数据存储特性不同,适用于不同业务场景。二者均用于存储对象集合,但在元素有序性、唯一性、查询效率等方面差异显著,是Java开发的基础核心知识点。

一、List集合:有序可重复的动态序列

List集合以有序、可重复为核心特征,元素按插入顺序排列,支持通过索引(类似数组下标)访问元素。其核心实现类包括ArrayList、LinkedList和Vector。

• ArrayList基于动态数组实现,查询效率高(通过索引直接访问),但增删元素(尤其是中间位置)效率低,需移动数组元素;

• LinkedList基于双向链表实现,增删效率高(仅需修改节点指针),但查询需遍历链表,效率较低;

• Vector与ArrayList结构类似,但支持线程同步,安全性高但性能略低。
List提供丰富的索引操作方法,如get(int index)获取元素、add(int index, E element)插入元素、remove(int index)删除元素,适用于需按顺序存储、频繁查询的场景,如购物车商品列表、学生成绩排名等。

二、Set集合:无序不可重复的元素集合

Set集合以无序、不可重复为核心特征,元素存储不保证顺序(哈希实现),且会自动去重。其核心实现类包括HashSet、LinkedHashSet和TreeSet。

• HashSet基于哈希表实现,底层依赖HashMap,查询、增删效率极高(O(1)),但元素无序;

• LinkedHashSet继承自HashSet,底层通过链表维护插入顺序,兼具去重性和有序性,效率略低于HashSet;

• TreeSet基于红黑树实现,元素会按自然顺序或自定义比较器排序,支持排序相关操作(如获取首尾元素),但效率低于哈希实现。
Set的去重机制依赖元素的equals()和hashCode()方法,需确保重写这两个方法以保证去重准确性,适用于需唯一存储的场景,如用户ID集合、商品编号集合等。

三、核心差异与应用选择
特性 List集合 Set集合 
元素特性 有序、可重复 无序(除LinkedHashSet)、不可重复 
访问方式 支持索引访问 不支持索引,仅迭代访问 
核心实现 ArrayList、LinkedList HashSet、TreeSet 
效率侧重 查询快(ArrayList)、增删快(LinkedList) 去重快、查询快(HashSet)、排序(TreeSet) 

开发中,需根据需求选择:需顺序存储、频繁查询用List;需唯一存储、高效去重用Set;需有序去重选LinkedHashSet,需排序去重选TreeSet。合理运用二者特性,能提升代码效率与可读性,是Java集合框架的核心应用能力。

http://www.dtcms.com/a/596381.html

相关文章:

  • 在IPython和PyCharm里通过PySpark实现词频统计
  • 03-node.js webpack
  • 维护_其它进程间通信(IPC Inter-Process communication)和分布式通信框架列述
  • 【大模型训练】roll 调用megatron 计算损失函数有,会用到partial
  • 使用nestjs/cli创建nest.js新项目
  • 广州外贸网站建设公司平面设计主要做什么工资多少
  • 广东省建设工程交易中心网站网站关键词不稳定
  • 组建网站需多少钱微信网站模板
  • jfinal 支持mysql的json字段类型解决方案
  • Excel处理控件Aspose.Cells教程:如何使用C#在Excel中添加、编辑和更新切片器
  • Java 在 Excel 文件中添加或删除分节符
  • 电子电气架构 --- 车载OTA功能
  • Chrome HSTS(HTTP Strict Transport Security)
  • 【项目亮点】基于EasyExcel + 线程池解决POI文件导出时的内存溢出及超时问题
  • 【C++】链表算法习题
  • 搭建智能问答系统需要什么文档解析工具?
  • 【C++】(以及大多数编程语言)中常见的 六种基本位运算操作
  • (129页PPT)罗兰贝格银行风险预警管理体系规划(附下载方式)
  • 建设银行网站可以更改个人电话网址大全域名解析
  • 增删查改(其一) —— insert插入 与 select条件查询
  • JuiceSSH+cpolar解锁手机远程Linux新姿势,无需公网IP,固定地址稳定用
  • 传统生产制造企业手写单据数字化落地:旗讯 OCR 的技术实现与系统对接方案
  • 如何添加网站白名单广州建设网站的公司
  • nnUNet 训练与推理命令操作记录
  • 【C#】从一次异步锁逐渐展开浅谈服务器架构解决重复编码问题,我与AI的一次深度讨论得出的一些解决方案
  • PKHeX 宝可梦存档编辑工具 用户可自由修改宝可梦属性、技能、道具、图鉴完成度等信息
  • 深度解析:环形链表——手撕面试经典题
  • elasticsearch集群访问中的通信问题
  • 西安模板网站建设套餐佛山做网站费用
  • 什么是RKNN?