源码探索-ArrayList

2023-11-19

ArrayList 继承与实现关系

数组的相关属性
在这里插入图片描述

ArrayList底层是一个Object[] 数组,既然是数组,那么底层的工具类大多是会用到Arrays工具类去实现。
函数探索
在这里插入图片描述

来看看构造函数 有三个构造函数,分别对应不同的生成内容。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

来看看添加 扩容
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

总结:数组扩容为1.5倍,并且每次扩容都会进行范围判定,这在我们一些开发过程中,对于入参的值进行有效判断是非常必要的。必要在可恢复异常的时候,我们可以抛出异常防止程序奔溃。
其中,我们看到modCount这个属性,这就要涉及到常见的面试题了。我们来看看remove方法。
在这里插入图片描述

我们来看一个例子
在这里插入图片描述

探索remove方法
在这里插入图片描述

此时你删除了一个元素,但是modCount的值进行+1操作后。那么遍历下一个参数时的next方法时,其实是在AbstractList里的私有类Itr里的方法的next。
在这里插入图片描述

在这里插入图片描述

因为remove方法使得modCount加1,但是一开始赋值的expectedModCount并没有修改,就会抛出异常。
在这里插入图片描述

在这里插入图片描述

解决方案:
利用Iterator
利用CopyAndWriteArrayList
利用倒叙删除法
利用增强for循环跳出,使用break;
方法参考:

https://blog.csdn.net/weixin_38970751/article/details/84349920

来看看检索
在这里插入图片描述

在这里插入图片描述

tips:如有不对的地方,请反馈

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

源码探索-ArrayList 的相关文章

  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

    目前正在与硒网络驱动程序和代码Java 我有一种情况 我需要在 C 目录中创建一个文件夹 并在该文件夹中创建我通过 selenium Web 驱动程序代码拍摄的屏幕截图 它需要存储在带有时间戳的文件夹中 如果我每天按计划运行脚本 所有屏幕截
  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分

随机推荐

  • VMWARE 占用硬盘空间越来越大的解决方法

    1 问题现象 为了开发android驱动 我使用vmware虚拟机运行UBUNTU12 04 硬盘分区有150G 分配了130g给虚拟机 还剩下不到20G的空间作为预留 本来想着130G的空间应该足够跑ubuntu的 但当我编译过几次and
  • 3D游戏编程——与游戏世界交互

    HW5 1 编写一个简单的鼠标打飞碟 Hit UFO 游戏 游戏内容要求 游戏有 n 个 round 每个 round 都包括10 次 trial 每个 trial 的飞碟的色彩 大小 发射位置 速度 角度 同时出现的个数都可能不同 它们由
  • 【LLM】如何将开源基础模型训练成特定领域的LLM?

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • xxxxxxxxxxxxxx

    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
  • python生成10个随机数并排序_生成一个随机数的列表,然后对它们进行排序

    首先 我想向您展示完整的代码 稍后我将发表评论 import random def randomNum return random sample range 1 100 5 numbers list randomNum print numb
  • BUUCTF LOVESQL

    打开网页后 利用hackbar 先来查询他的列数 1 order by 3 试了1 2 3 4都不行 初步判断 是被后端代码过滤掉了 我们试试 和 的效果是一样的 但是当我尝试使用 后发现仍然没有反应 说明后端代码也过滤掉了 我们采用另外一
  • 二进制在数学中的妙用

    二进制在数学中的妙用 goal00001111搜集整理 十 八世纪初 莱布尼茨发明了二进制数 当时的他肯定没有预料到二进制在信息时代会有着如此广泛的应用 二进制数以其工作可靠 运算简单 逻辑严密 容易实现 等特点 成为了计算机的专用语言 在
  • linux下安装中文输入法及vim支持中文的方法

    最近折腾Ubuntu 之前一直是用英文显示系统 输入法也是Ubuntu14默认的拼音 一开始也没觉得不好 可是在vim编辑文档时 需要添加注释 这就显得十分不方便 所以花点时间来解决这个问题 一开始是想找vim如何支持中文的方法 网络上的各
  • Springboot Maven显示缺少org.junit.jupiter.api

    原因 spring boot 2 2 之前使用的是 Junit4 而后续的使用的是Junit5 导致缺少包 解决方法 导入包
  • C语言-多选题

    C语言多选题 1 若有字符串char string和缓冲区char buf MAX LEN string非空 并且缓冲区长度MAX LEN大于string的长度 则将字符串string复制到缓冲区buf 下列做法正确的是 AB A spri
  • CentOS 7查看磁盘空间

    CentOS如何查看硬盘大小 CentOS是一种基于Linux的操作系统 主要用于服务器端应用 在服务器管理中 硬盘大小是一个非常重要的指标 查看硬盘大小可以帮助系统管理员有效地管理硬盘空间和避免硬盘满了的情况 方法一 使用df命令 df命
  • Unity 用脚本操作常用UI控件(上)

    控件介绍 在界面系统的术语中 将一个具有独立状态 外观和操作的对象称为控件 例如 常用的交互控件有按钮 输入框 滑动条等 常见的非交互式控件有文本标签 图片等 Unity采用了父子物体和组件的设计思想 其每个界面控件 往往也是由游戏物体挂载
  • 虚拟内存的最大容量与实际容量区别

    虚拟内存的最大容量与实际容量区别 1 概念介绍 虚拟内存的最大容量是计算机的地址结构 CPU寻址范围决定的 虚拟内存的实际容量是内存与外存之和 CPU寻址范围 两者的最小值 2 例题介绍 某计算机的地址结构是64位 按字节编址 内存大小51
  • 找准边界,吃定安全

    潜在的网络威胁 网络安全挑战层出不穷 如何确保网络安全 山石云 景赋能中小企业安全运营 让安全更有效 找准边界 吃定安全 往期文章 从访问控制谈起 再看零信任模型 威胁情报加持 泛边界下的全局主动防御体系如何着手 流量剧增 看山石网科如何打
  • UWB与蓝牙AOA定位技术简要对比

    1 UWB基本原理 UWB 超宽带技术 是基于IEEE802 15 4a z标准的利用纳秒级窄脉冲进行数据传输的无线通信技术 主要服务于微位置 micro location a person s placement to within a
  • java中如何将Long类型转为Integer类型

    注意不能直接在前面加个 int 而是 将Long型转换为int型 这里的Long型是包装类型 Long a 10 int b a intValue 即long intValue
  • Hx711调试过程

    1 体重板子最开始出现的问题 无法下载程序 指示灯不亮 解决办法 检查电源复位晶振 发现晶振还有 boot键坏了 2 问题 下载进程序以后 板子通过串口发到电脑上的数据不变 解决办法 先是查了关于HX711的各种资料 了解到 HX711芯片
  • pycharm内存不足时如何修改设置?

    Help gt Find Action gt type VM Options gt Click Edit Custom VM Options Pycharm 2016 2 will open the appropriate vmoption
  • MFC中操作Word文档

    首先我们需要导入word类库 电脑上需要安装了word 左击项目 点击类向导 添加类 C 选择类型库中的MFC类 本文章案例可点击下载 然后选择文件 位置选择从office安装目录中找到MSWORD OLB文件 然后点击 gt gt 添加所
  • 源码探索-ArrayList

    ArrayList 继承与实现关系 数组的相关属性 ArrayList底层是一个Object 数组 既然是数组 那么底层的工具类大多是会用到Arrays工具类去实现 函数探索 来看看构造函数 有三个构造函数 分别对应不同的生成内容 来看看添