Java集合剖析3】ArrayList

目录

拓展

1. 在面试时如何讲解一个集合的底层?

2. IDEA如何查看底层源码?

一、ArrayList底层数据结构

二、插入方法的具体实现 

三、ArrayList底层原理总结


拓展

1. 在面试时如何讲解一个集合的底层?

  • 底层的数据结构。
  • 插入方法的具体实现。

2. IDEA如何查看底层源码?

Ctrl + n 然后搜索类名。

Ctrl + F12 查看类的使用方法,也支持搜索。

Alt + 7 罗列出类中的所有方法。


一、ArrayList底层数据结构

  • ArrayList的底层是一个Object[]数组,叫elementData。
  • 还有一个记录元数个数的size变量。


二、插入方法的具体实现 

插入有两种情况,一种是add方法一个一个插入;另一种是addAll方法,一次插入一个集合的数据。


三、ArrayList底层原理总结 

  • ArrayList的底层是一个Object[]数组,叫elementData。
  • 还有一个记录元数个数的size变量。
  • 如果新建一个集合,不指定长度,底层创建的是一个默认长度为0的数组。如果指定了数组长度就以指定的长度为准。
  • 在添加第一个元素时,底层会创建一个新的长度为10的数组。
  • 存满时扩容为原来的1.5倍。但如果是使用addAll方法一次插入多个数据,而且扩容1.5倍还装不下时,就以需要的长度为标准。


------------------------END-------------------------

才疏学浅,谬误难免,欢迎各位批评指正。

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

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

相关文章

vue综合指南(六)

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vuet篇专栏内容:vue综合指南 目录 101、Vue 框架怎么实现对象和数组的监听? 102、Proxy 与 Object.d…

10 分钟使用豆包 MarsCode 帮我搭建一套后台管理系统

以下是「 豆包MarsCode 体验官」优秀文章,作者把梦想揉碎。 十分钟使用豆包 MarsCode 搭建后台管理项目 在这个快节奏的时代,开发者们总是希望能够快速、高效地完成项目的搭建与开发工作。无论是初创企业还是大型公司,后台管理系统都是必不可…

SpringBoot1~~~

目录 快速入门 依赖管理和自动配置 修改自动仲裁/默认版本号 starter场景启动器 自动配置 修改默认扫描包结构 修改默认配置 读取application.properties文件 按需加载原则 容器功能 Configuration Import ​编辑 Conditional ImportResource 配置绑定Configur…

要在 Git Bash 中使用 `tree` 命令,下载并手动安装 `tree`。

0、git bash 安装 git(安装,常用命令,分支操作,gitee,IDEA集成git,IDEA集成gitee,IDEA集成github,远程仓库操作) 1、下载并手动安装 tree 下载 tree.exe 从 tree for Windows 官方站点 下载 tree 的 Windows 可执行文件。tree for Window:https://gnuwin32.source…

鸿蒙应用开发:全面认识鸿蒙系统

前言 随着智能设备的普及和物联网的发展,对操作系统的需求也越来越多样化。鸿蒙操作系统作为一款面向全场景的分布式操作系统,其适用范围非常广泛,从智能手机到家用电器,再到工业设备,都能找到应用场景。特别是在智能…

Nginx如何配置Gzip

Nginx 配置 Gzip 压缩可以显著减小传输的文件大小,提高网页加载速度。以下是在 Nginx 中配置 Gzip 的详细步骤: 一、找到 Nginx 配置文件 Nginx 的配置文件通常位于 /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf(取决于 Ngin…

鸿蒙网络编程系列22-Web组件文件上传示例

1. web组件文件上传功能简介 鸿蒙的web组件可以加载网页,如果网页本身具备文件上传功能的话就比较尴尬了,因为html上传文件时,允许用户选择本地文件,但是鸿蒙因为安全性的考虑,只允许操作沙箱中的文件,所以…

android——Groovy gralde 脚本迁移到DSL

1、implementation的转换 implementation com.github.CymChad:BaseRecyclerViewAdapterHelper:*** 转换为 implementation ("com.github.CymChad:BaseRecyclerViewAdapterHelper:***") 2、plugin的转换 apply plugin: kotlin-android-extensions 转换为&#x…

物联网的应用以及优势

物联网智能项目涵盖了多个行业领域,随着技术的不断进步和普及,越来越多的应用案例成为主流趋势。此篇文章将概述一些主要的物联网智能项目类别及其优势和日常使用场景: 主流物联网智能项目 1. 智能家居: •优势: 提升居住体验,…

双十一母婴有什么好物推荐?双十一这五款母婴好物不容错过!

随着双十一购物狂欢节的来临,母婴用品市场再次迎来了消费者的热切关注。作为家长们为孩子和自身挑选必需品的重要时刻,母婴用品的质量和安全性无疑成为了关注的焦点。在众多品牌和商品中,我们精心筛选了本年度最受欢迎的母婴用品,…

5 机器学习之发展历程

所谓“知识就是力量”​。 1965年,Feigenbaum主持研制了世界上第一个专家系统DENDRAL。 机器学习是人工智能(artificial intelligence)研究发展到一定阶段的必然产物。二十世纪五十年代到七十年代初,人工智能研究处于“推理期”​,那时人们…

24/10/14 算法笔记 循环神经网络RNN

RNN: 一种专门用于处理序列数据的神经网络,它能够捕捉时间序列中的动态特征。RNN的核心特点是其循环连接,这允许网络在不同时间步之间传递信息,从而实现对序列数据的记忆和处理能力。 应用的场景: 自然语言处理(NLP&…

关于Python AI 编程助手Fitten Code的应用体验以及Python 修改删除 sys.path 路径以实现两个项目代码的合并

一、关于Python AI 编程助手Fitten Code的应用体验 AI现在无孔不入,现在都开始进入到编程中了,有一个能适用多种编译器环境的AI编程插件 Fitten Code。其适配了 Viusal Studio,VS Code(本文使用),JetBrains 系列(本文使用)以及Vim…

Mac通过键盘选取内容

问题: 我们在使用键盘的时候经常懒得动手去拿鼠标了,并且熟练使用键盘可以提高我们的工作效率,比如在我们需要复制内容的时候,可以仅仅通过键盘来选取想要的内容; 解决: 将鼠标光标移动到想要选取的内容…

如何使用C#实现Padim算法的训练和推理

目录 说明 项目背景 算法实现 预处理模块——图像预处理 主要模块——训练:Resnet层信息提取 主要模块——信息处理,计算Anomaly Map 主要模块——评估 主要模块——评估:门限值的确定 主要模块——推理 写在最后 项目下载链接 说…

进入 Searing-66 火焰星球:第一周游戏指南

Alpha 第四季已开启,穿越火焰星球 Searing-66,带你开启火热征程。准备好勇闯炙热的沙漠,那里有无情的高温和无情的挑战在等待着你。从高风险的烹饪对决到炙热的冒险,Searing-66 将把你的耐力推向极限。带上充足的水,天…

Java线程的状态以及转换条件,与操作系统线程状态的区别?

先看图增加点记忆。 Java线程状态: 线程状态转换图: 背景知识 JAVA的线程模型与操作系统线程的对应关系是1:1的,线程的调度权是由操作系统控制的。 为什么java的线程状态与操作系统不一致? JVM线程状态:RUNNAB…

mybatis二级缓存类加载问题

问题 CacheNamespace 修饰的接口,例如MapperA, 要先与CacheNamespaceRef(MapperA.class)修饰的接口加载 你遇到的问题是由于 Spring Boot 启动时,加载顺序导致 B 先加载,而 A 的缓存命名空间还没有被创建。这是 MyBatis 在解析 …

机器学习摘下诺奖桂冠

前言 近日,2024年诺贝尔物理学奖颁发给了机器学习与神经网络领域的研究者,这是历史上首次出现这样的情况。这项奖项原本只授予对自然现象和物质的物理学研究作出重大贡献的科学家,如今却将全球范围内对机器学习和神经网络的研究和开发作为了一…

Kubernetes ETCD的恢复与备份

在 Kubernetes 中,ETCD 扮演着至关重要的角色: 1. 集群状态存储 2. 服务发现 3. 配置管理 4. 分布式锁和协调 5. 故障恢复 ETCD 存储了 Kubernetes 集群中所有的状态信息,包括节点、Pod、Service、ConfigMap、Secrets 等。ETCD 支持服务发现…