java 一文讲透集合框架(10万字博文)

news2024/11/16 13:22:34

目录

一、前言

二、集合简介

        1.定义 : 

        2.集合与数组的区别 : 

        3.集合的好处 : 

三、集合框架

        1.单列集合

        2.双列集合

        Δ体系图(重要)

四、List集合详解(三万余字)

五、Set集合详解(三万余字)

六、增强for和迭代器 万字详解

七、Map集合详解(三万余字)

八、Collections类详解

九、泛型详解

十、集合框架总结


一、前言

        本篇博文是对Java 集合框架的一个全面总结,同时也囊括了我们“API(常用工具)”专题——集合篇章的几乎全部内容。屏幕前的你一定或多或少地听说过“集合框架”这个响当当的名词。“集合框架”绝不仅仅是指“java 集合体系图”那么简单,也绝不仅仅局限于几个常用实现类的使用那么肤浅;我们还必须从底层源码的角度去寻根问底,了解不同实现类的特点,以及不同实现类之间的联系和区别,保持虚心,不断练习,才能真正地掌握集合框架。

        本篇博文将会从集合体系图总览List集合体系Set集合体系Map集合体系增强for和迭代器这五个大的方面同大家娓娓而谈。重点部分是对常用实现类(比如ArrayList和HashSet)的源码分析,up投入最大,相信你看完一定有收获。注意 : ①代码中的注释也很重要。点击目录或者侧边栏可以跳转。良工不示人以朴,所有文章都会适时改进。感谢阅读!


二、集合简介

        1.定义 : 

                集合,简称集,是用来存储多个元素的容器。

        2.集合与数组的区别 : 

                1° 元素类型 : 
                        集合——引用类型(存储基本类型时自动装箱)
                        数组——即可存储基本类型,也可存储引用类型(但不能混用)

                2° 元素个数 : 
                        集合——不固定,可进行任意扩容
                        数组——固定,长度一旦指定,不能更改

        3.集合的好处 : 

                集合不受容器大小限制,可以随时添加或删除元素;可以动态地保存任意多个对象。
                集合提供了大量操作元素的方法(判断、获取等),便于操作。


三、集合框架

        1.单列集合

                List(接口): 
                        常用实现类——ArrayList, LinkedList, Vector        
                Set(接口):
                        常用实现类——HashSet, TreeSet

        2.双列集合

                Map(接口):
                        常用实现类——HashMap, LinkedHashMap, Hashtable, Properties, TreeMap

        Δ体系图(重要

                Δ注意 : Collection, List, Set, Map这四个都是接口。


四、List集合详解(三万余字)

                链接如下 : 

https://blog.csdn.net/TYRA9/article/details/127916263https://blog.csdn.net/TYRA9/article/details/127916263                List集合主要内容包括 : 
                ①List集合概述
                ②List集合特点
                ③使用集合的经典四部曲
                ④List集合常用方法演示
                ⑤List接口实现类——ArrayList 源码分析
                ⑥List接口实现类——Vector 源码分析
                ⑦List接口实现类——LinkedList 源码分析


五、Set集合详解(三万余字)

                链接如下 : 

https://blog.csdn.net/TYRA9/article/details/129614936https://blog.csdn.net/TYRA9/article/details/129614936                Set集合主要内容包括 : 
                ①Set集合简介

                ②Set集合常用方法演示

                ③Set接口实现类——HashSet 源码分析

                ④Set接口实现类——LinkedHashSet 源码分析

                ⑤Set接口实现类——TreeSet 源码分析


六、增强for和迭代器 万字详解

                链接如下 : 

https://blog.csdn.net/TYRA9/article/details/127972439https://blog.csdn.net/TYRA9/article/details/127972439                增强for和迭代器主要内容包括 : 

                ①增强for的格式

                ②增强for的演示

                ③增强for的优缺点

                ④迭代器的常用方法

                ⑤迭代器的使用方式

                ⑥迭代器的执行原理


七、Map集合详解(三万余字)

                链接如下 : 

https://blog.csdn.net/TYRA9/article/details/129739541https://blog.csdn.net/TYRA9/article/details/129739541                Map集合主要内容包括 : 

                ①Map集合的简介

                ②Map集合的常用方法

                ③Map集合的遍历方式

                ④Map接口实现类——HashMap 源码分析

                ⑤Map接口实现类——Hashtable 源码分析

                ⑥Map接口实现类——TreeMap 源码分析


八、Collections类详解

                链接如下 : 

https://blog.csdn.net/TYRA9/article/details/129906494https://blog.csdn.net/TYRA9/article/details/129906494                Collections主要内容包括 : 

                ①Collections类简介

                ②Collections类常用方法演示


九、泛型详解

                链接如下 : 

https://blog.csdn.net/TYRA9/article/details/130038813https://blog.csdn.net/TYRA9/article/details/130038813                泛型主要内容包括 : 

                ①泛型的由来

                ②泛型的格式

                ③泛型的使用

                ④自定义泛型类

                ⑤自定义泛型接口

                ⑥通配符的使用

                ⑦JUnit框架的使用


十、集合框架总结

        再次回顾我们的集合篇章,我们从集合与数组的对比开始,先介绍了集合的框架体系图,又将List接口,Set接口,Map接口分别展开来讲解,并通过断点调试的方式详细分析了这些个接口的一些常用实现类的底层源码。接着,我们又穿插了关于增强for和迭代器,关于Collections工具类,关于泛型的知识的讲解。
        那么,学了这么多集合实现类,到底啥时候用啥,什么情况用什么呢?莫慌,集合实现类的选择,主要取决于业务操作特点和集合实现类本身的特点,up用一张图解决你的疑惑,如下图所示

        🆗,以上就是我们“API(常用工具)”专题——集合篇章的全部内容了。下一个篇章是我们的java常用工具之IO流(当然,up之前已经出过了IO流的博文)。感谢阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/410569.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习实践-Whisper语音识别模型实战(部署+运行)

1、Whisper内容简单介绍 OpenAI的语音识别模型Whisper,Whisper 是一个自动语音识别(ASR,Automatic Speech Recognition)系统,OpenAI 通过从网络上收集了 68 万小时的多语言(98 种语言)和多任务…

论文笔记|CVPR2023:Semantic Prompt for Few-Shot Image Recognition

论文地址:https://arxiv.org/pdf/2303.14123.pdf 这是一篇2023年发表在CVPR上的论文,论文题目是Semantic Prompt for Few-Shot Image Recognitio,即用于小样本图像识别的语义提示。 1 Motivation 第一,最近几项研究利用 语义信…

< Linux >:进程地址空间

目录 一、验证进程地址空间 二、感知进程地址空间的存在 一、验证进程地址空间 我们之前学的 C/C 程序地址空间是物理内存吗? 答:不是物理内存,甚至叫做程序地址空间都不太准确,应该叫做进程地址空间,因此根本就不是…

Notion插件,让你的页面有无限可能

// 你是否觉得notion的极简风格略为单调?是否想用notion实现更多的功能?是否想让notion更为便捷,更为多样化?那今天推荐的几款notion插件绝对不能错过,因为他们也确实不错。 // - ———byFutureForce DAO——— - 你…

把ChatGPT接入我的个人网站

效果图 详细内容和使用说明可以查看我的个人网站文章 把ChatGPT接入我的个人网站 献给有外网服务器的小伙伴 如果你本人已经有一台外网的服务器,并且页拥有一个OpenAI API Key,那么下面就可以参照我的教程来搭建一个自己的ChatGPT。 需要的环境 Cento…

让我们一起解密组播、IGMP、IGMP监听

前言:一直对组播这个概念迷迷糊糊,特别是交换机处理组播的方式,非常想搞懂但是懒癌发作。这几天终于耐心地看了下有关组播的资料,大致了解了一下同一广播域内组播的相关知识。组播占了计算机网络的一大部分,特别是组播…

ChatGPT 被大面积封号,到底发生什么了?

意大利数据保护机表示 OpenAI 公司不但非法收集大量意大利用户个人数据,没有设立检查 ChatGPT 用户年龄的机制。 ChatGPT 似乎正在遭遇一场滑铁卢。 3月31日, 大量用户在社交平台吐槽,自己花钱开通的 ChatGPT 账户已经无法登录,更…

举一反三学python(9)—excel基础

一、导论: 操作 excel 表格的Python 第三方库有openpyxl、xlrd、xlwt等,它们的功能都相同,就是语法有差异,今天我就带领大家学习用openpyxl模块操作实用的excel文件。 openpyxl模块为第三方库,首先要安装:p…

electron+vue3全家桶+vite项目搭建【九】集成vite-plugin-mock-server 模拟后端请求

文章目录引入1.引入依赖2.集成插件3.测试接口请求引入 后端接口出的太慢?问题不大,咱们可以借助vite-plugin-mock-server插件自己写接口,返回商量好的格式,后续联调直接切换环境即可 vite-plugin-mock-server官网 mock.js官网 …

uniapp人脸识别解决方案

APP端: 因为APP端无法使用uni的camera组件,最开始考虑使用内嵌webview的方式,通过原生dom调用video渲染画面然后通过canvas截图。但是此方案兼容性在ios几乎为0,如果app只考虑安卓端的话可以采用此方案。后面又想用live-pusher组件…

【Linux】vi编辑器——插入模式

目录 插入模式 光标移动命令 a A i I o O命令 a----------------在光标后附加文本 A----------------在文本行末附加文本 i------------------在光标前插入文本 I-------------------在文本开始插入文本 o----------------在光标下插入新行 O---------------在…

陶泓达:4.11黄金原油白银最新走势分析及操作策略!

黄金行情走势分析:   周一(4月10日),国际金价一度跌约1%,重回2000美元干口下方。此前公布的美国3月非农就业数据显示劳动力市场吃紧,并提高了美联储5月再次加息的预期。金属公司MKS PAMP在一份报告中表示:“金价自20…

Doris(5):数据导入(Load)之Broker load

为适配不同的数据导入需求,Doris系统提供了五种不同的数据导入方式,每种数据导入方式支持不同的数据源,存在不同的方式(异步,同步) Broker load 通过Broker进程访问并读取外部数据源(HDFS&#…

elasticsearch之DSL查询文档

目录 DSL查询分类 全文检索查询 match查询: multi_match: 精准查询 地理坐标查询 矩形范围查询 中心点范围 组合查询 elasticsearch中的相关性打分算法是什么? 案例——给“如家”这个品牌的酒店排名靠前一些 function score query…

ChatGPT写新闻-ChatGPT写文章

ChatGPT写新闻 ChatGPT可以用于生成新闻稿件,但需要注意的是,由ChatGPT生成的新闻稿件可能存在语义、逻辑、事实准确性等方面的问题,因此需要进行人工审核和编辑,确保其准确性。 下面是一个示例过程,大致了解如何使用…

GPT3.5 , InstructGPT和ChatGPT的关系

GPT-3.5 GPT-3.5 系列是一系列模型,从 2021 年第四季度开始就使用文本和代一起进行训练。以下模型属于 GPT-3.5 系列: code-davinci-002 是一个基础模型,非常适合纯代码完成任务text-davinci-002 是一个基于 code-davinci-002 的 InstructG…

PixiJS 文字模糊处理策略

pixijs介绍 PixiJS是一个用于创建交互式2D图形和动画的JavaScript库。它是一个快速、轻量级、易于使用的库,可以在WebGL和Canvas上运行。支持WebGL和Canvas两种渲染方式。WebGL是一种基于OpenGL的3D图形API,可以在GPU上进行高效的图形渲染。Canvas是一种…

基于神经辐射场NeRF的SLAM方法

随着2020年NeRF[1]的横空出世,神经辐射场方法(Neural Radiance Fields)如雨后春笋般铺天盖地卷来。NeRF最初用来进行图像渲染,即给定相机视角,渲染出该视角下的图像。NeRF是建立在已有相机位姿的情况下,但在…

Android kotlin (仿淘宝app收藏)用RecyclerView(androidx+BRVAH3.0.6)实现单选/多选/全选/反选/批量删除功能

文章目录 一、实现效果二、引入依赖三、实现源码1、实体类2、适配器3、提示框(关闭和确定)4、视图实现一、实现效果 二、引入依赖 在app的build.gradle在添加以下代码 implementation com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0

使用采集工具,轻松获取目标受众的数据,让您的市场营销更加精准

【数据采集神器】使用采集工具,轻松获取目标受众的数据,让您的市场营销更加精准! 在当前这个信息化社会中,数据已经成为了企业发展和市场营销的必要手段。企业需要通过数据来了解市场的需求,了解自己产品的竞争优势&a…