news 2026/2/22 16:47:52

JAVA集合(含List、Map、Set)(超详细版)零基础入门到精通,收藏这篇就够了

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JAVA集合(含List、Map、Set)(超详细版)零基础入门到精通,收藏这篇就够了

前言

java集合框架主要包括两种类型的容器,一种是集合,存储一个元素集合(Collection),另一种是图(Map),存储键/值对映射

java集合简介

一、集合简介

java集合可分为Set、List、Queue和Map四种体系。

set代表无序、不可重复的集合

List代表有序、重复的集合

而Map则代表具有映射关系的集合

Queue代表一种队列集合实现

Java集合就像是一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)“丢进”该容器中。从Java5 增加了泛型以后,Java集合可以记住容器中对象的数据类型,使得编码更加简洁、健壮。

2.集合和数组的区别

长度区别:数组的长度固定,而集合长度可变

内容区别:数组可以是基本数据类型,也可以是引用数据类型(类、接口、数组);二集合只能是引用数据类型

元素内容:数组只能存储同一数据类型,集合可以存储不同数据类型(集合一般存储的也是同一数据类型)

二、List集合

1)ArrayList集合

1、特点

ArrayList是集合的一个实现类;

ArrayList内部封装了一个Object类型的对象,初始长度为0,且长度可变

ArrayList集合的查询快,但是增删慢

线程不安全

2、ArrayList集合的一些方法

.add(Object element)向列表的尾部添加指定的元素。

.size()返回列表中的元素个数。

.get(int index)返回列表中指定位置的元素,index从零开始。

实现:

.add(int index,Object element)在列表的指定位置(从0开始)插入指定元素

.set(int i,Object element)使用元素element替换索引i位置的元素,并返回替换元素

.clear()从列表中移除所有元素

.isEmpty()判断列表是否包含元素,不包含元素则返回true,否则返回false

.contains(Object o)如果列表包含指定的元素,则返回true。

.remove(int index)移除列表中指定位置的元素,并返回被删元素,删除位置后面的元素(如果有)向前移动。

.remove(Object o)从List集合中移除第一次出现的指定元素,移除成功则返回true,否则返回false。当且仅当List集合中含有满足(o==null ? get(i)==null : o.equals(get(i)))条件的最低索引i的元素时才会返回true。

.iterator()返回按适当顺序在列表的元素上进行迭代的迭代器

for循环遍历List集合

加强for循环遍历List集合

2)LinkedList集合

1、LinkedLIst集合的一些特点

LinkedList是集合的一个实现类

LinkedList内部封装了一个双向链表

LinkedList集合的增删快,但是查询慢

线程不安全

2、LinkedList集合的一些方法:

添加

boolean add(Object element) 它将元素附加到列表的末尾。

boolean add(int index,Object element) 指定位置插入。 void addFirst

boolean add(int index,Object element) 指定位置插入。 void addFirst(E element) 元素附加到列表的头部 void addLast(E element) 元素附加到列表的尾部

输出

[5, 4, 9, 1, 2, 3, 6]

获取数据

Object get(int index) 根据下标获取数据

Object getFirst() 它返回链表的第一个元素。

Object getLast() 它返回链接列表的最后一个元素。

查询

boolean contains(Object element)如果元素存在于列表中,则返回true。

输出

是否出现过元素1:true

是否出现过元素4: false

修改

Object set(int index,Object element)它用于用新元素替换列表中的现有元素

输出

更新过的链表:[1, 9, 3, 1]

删除

remove() 删除第一个元素

remove(int location) 删除指定位置的元素

removeFirst() 删除并返回链接列表的头部一个元素

removeLast() 删除并返回链接列表的尾部一个元素

清空

.clear():它删除列表中的所有元素。

输出

[]

链表长度

输出

链表的长度:4

3)Vector集合(不建议使用)

Vector集合的特点

底层的数据结构是:数组

有索引、查询快、增删慢

单线程,线程安全

4)List集合总结

三、Map集合

1)HashMap集合

1.HashMap示意图

2.HashMap的特点

底层是链表+数组,JDK8以后右加了红黑树
存储的是key-value类型的数据
key值不允许重复,key重复会被覆盖,value运行重复
数据存储无序:无序指的是插入顺序和取出顺序是不一致的
key和value都允许为空,但是只能有一个空的key

3.HashMap的常用方法

①.put(K key, V value) 将键(key)/值(value)映射存放到Map集合中

②.get(Object key) 返回指定键所映射的值,没有该key对应的值则返回 null,即获取key对应的value。

可知,之前加入的value已被覆盖,前面的观点得证

③. size() 返回Map集合中数据数量,准确说是返回key-value的组数。

④:clear() 清空Map集合

0

⑤:isEmpty () 判断Map集合中是否有数据,如果没有则返回true,否则返回false

false

true

⑥:remove(Object key) 删除Map集合中键为key的数据并返回其所对应value值。

⑦:containsKey(Object key) Hashmap判断是否含有key

false

true

⑧:containsValue(Object value) Hashmap判断是否含有value:

false

true

⑨:Hashmap添加另一个同一类型的map下的所有数据

⑩:Hashmap替换这个key的value

2)TreeMap集合

1…TreeMap的特点

TreeMap是一个有序的key-value集合,他是通过红黑树实现的
无序,不允许重复(无序指元素顺序与添加顺序不一致)
treeMap的key是有序的
TreeMap集合默认会对键进行排序,所以键必须实现自然排序和定制排序中的一种:自然排序/定制排序

四、set集合

1)HashSet集合

1.HashSet集合的特点

HashSet底层使用的是HashMap
不能保证元素的顺序,元素是无序的,不能有重复的元素
集合元素值允许为nul
HashSet线程不安全

2…HashSet常用方法

①:add(Object o):向Set集合中添加元素,不允许添加重复数据。

②:size():返回Set集合中的元素个数

注意:不会按照保存的顺序存储数据(顺序不定),遍历时不能保证下次结果和上次相同。且向HashSet集合中添加元素,HashSet add方法实质是map全局变量调用了put方法,将数据存到了key,因为HashMap的 key不允许,所以HashSet添加的元素也不允许重复。

③.remove(Object o): 删除Set集合中的obj对象,删除成功返回true,否则返回false。

④.isEmpty():如果Set不包含元素,则返回 true。

⑤.clear(): 移除此Set中的所有元素。

⑥.iterator():返回在此Set中的元素上进行迭代的迭代器。

⑦.contains(Object o):判断集合中是否包含obj元素。

true

⑧:加强for循环遍历Set集合:

2)LinkedHashSet集合

LinkedHashSet集合的特点

LinkedHashSet底层使用的是HashSet,同时使用链表维护元素的插入顺序
元素有序且唯一,链表保证元素有序
哈希表保证元素唯- 线程不安全

3)TreeSet集合
1.TreeSet集合的特点

TreeSet其内部使用的是TreeMap,TreeMap是基于红黑树实现的
插入数据内部有两种排序方法:自然排序(默认) 定制排序
无序:TreeSet会对插入的数据排序,所以输入顺序和输出顺序不一致
值不能为null
值唯一
线程不安全

2.TreeSet的基本使用

①.插入是按字典序排序的

②.如果插入的是自定义对象 需要让类实现 Comparable 接口并且必须要重写compareTo

abcd:12

agg:12

agg:21

ffas:8

4)HashSet、LinkedHashSet、TreeSet的使用场景

HashSet:HashSet的性能基本上比LinkedHashSet和TreeSet要好,特别是添加和查询,这也是用的最多的两个操作

LinkedHashSet:LinkedHashSet的查询稍慢一些,但是他可以维持元素的添加顺序。所以只有要求当插入顺序和取出顺序一致的时候 才使用LinkedHashSet。

TreeSet:只有在需要对元素进行排序时使用

5)list和set集合的区别

有序性 List保证按插入顺序排序
Set存储和取出顺序不一致
唯一性 List可以重复
Set元素唯
获取元素 Iist可以通过索引直接操作元素
Set不能根据索引获取元素

Java开发的就业市场正在经历结构性调整,竞争日益激烈

传统纯业务开发岗位(如仅完成增删改查业务的后端工程师)的需求,特别是入门级岗位,正显著萎缩。随着企业技术需求升级,市场对Java人才的要求已从通用技能转向了更深入的领域经验(如云原生、微服务)或前沿的AI集成能力。这也导致岗位竞争加剧,在一、二线城市,求职者不仅面临技术内卷,还需应对学历与项目经验的高门槛。

大模型为核心的AI领域正展现出前所未有的就业热度与人才红利

2025年,AI相关新发岗位数量同比激增543%,单月增幅最高超过11倍,大模型算法工程师位居热门岗位前列。行业顶尖人才的供需严重失衡,议价能力极强,跳槽薪资涨幅可达30%-50%。值得注意的是,市场并非单纯青睐算法研究员,而是急需能将大模型能力落地于复杂业务系统的工程人才。这使得具备企业级架构思维和复杂系统整合经验的Java工程师,在向“Java+大模型”复合人才转型时拥有独特优势,成为企业竞相争夺的对象,其薪资天花板也远高于传统Java岗位。

说真的,这两年看着身边一个个搞Java、C++、前端、数据、架构的开始卷大模型,挺唏嘘的。大家最开始都是写接口、搞Spring Boot、连数据库、配Redis,稳稳当当过日子。

结果GPT、DeepSeek火了之后,整条线上的人都开始有点慌了,大家都在想:“我是不是要学大模型,不然这饭碗还能保多久?”

先给出最直接的答案:一定要把现有的技术和大模型结合起来,而不是抛弃你们现有技术!掌握AI能力的Java工程师比纯Java岗要吃香的多。

即使现在裁员、降薪、团队解散的比比皆是……但后续的趋势一定是AI应用落地!大模型方向才是实现职业升级、提升薪资待遇的绝佳机遇!

如何学习AGI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2025最新版CSDN大礼包:《AGI大模型学习资源包》免费分享**

一、2025最新大模型学习路线

一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1级别:AI大模型时代的华丽登场

L1阶段:我们会去了解大模型的基础知识,以及大模型在各个行业的应用和分析;学习理解大模型的核心原理,关键技术,以及大模型应用场景;通过理论原理结合多个项目实战,从提示工程基础到提示工程进阶,掌握Prompt提示工程。

L2级别:AI大模型RAG应用开发工程

L2阶段是我们的AI大模型RAG应用开发工程,我们会去学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3级别:大模型Agent应用架构进阶实践

L3阶段:大模型Agent应用架构进阶实现,我们会去学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造我们自己的Agent智能体;同时还可以学习到包括Coze、Dify在内的可视化工具的使用。

L4级别:大模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,我们会更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调;并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握;而L3 L4更多的是通过项目实战来掌握大模型的应用开发,针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

二、大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

三、大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

四、大模型项目实战

学以致用,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

五、大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2025最新版CSDN大礼包:《AGI大模型学习资源包》免费分享

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/15 15:52:49

R语言par()参数调优全解析:轻松搞定mfrow与mar的间距陷阱

第一章:R语言多图组合中的间距控制概述在使用R语言进行数据可视化时,经常需要将多个图形组合到同一绘图区域中,以实现更高效的图表对比与信息呈现。然而,不同图形之间的间距若未合理设置,可能导致布局拥挤或空白过多&a…

作者头像 李华
网站建设 2026/2/17 8:02:53

Zotero Reference终极指南:5分钟搞定PDF参考文献自动导入

还在为手动整理参考文献而烦恼吗?Zotero Reference作为一款专业的文献管理工具插件,能够自动解析PDF中的参考文献并一键导入Zotero,让科研工作变得轻松高效。本文将用最简单的方式,带你从零开始掌握这款科研神器。 【免费下载链接…

作者头像 李华
网站建设 2026/2/15 21:30:55

Steam清单下载神器:自动化获取完整游戏数据的终极解决方案

Steam清单下载神器:自动化获取完整游戏数据的终极解决方案 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 你是否曾经为了寻找某个Steam游戏的清单文件而花费大量时间手动搜索&#…

作者头像 李华
网站建设 2026/2/6 21:40:13

为什么你的GLM模型总出错?详解R中分布族误用的7个坑

第一章:为什么你的GLM模型总出错?详解R中分布族误用的7个坑 在使用广义线性模型(GLM)时,选择合适的分布族是确保模型有效性的关键。然而,许多用户在R中建模时常因错误理解响应变量的特性而误选分布族&#…

作者头像 李华
网站建设 2026/2/7 4:49:52

如何用RPFM终极工具解决Total War模组开发中的十大痛点

如何用RPFM终极工具解决Total War模组开发中的十大痛点 【免费下载链接】rpfm Rusted PackFile Manager (RPFM) is a... reimplementation in Rust and Qt5 of PackFile Manager (PFM), one of the best modding tools for Total War Games. 项目地址: https://gitcode.com/g…

作者头像 李华
网站建设 2026/2/21 17:21:51

GitHub加速终极解决方案:5分钟告别龟速下载

GitHub加速终极解决方案:5分钟告别龟速下载 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 还在为GitHub下载速度慢如蜗…

作者头像 李华