ArrayList源码学习

AUTOSAE软件配置-达芬奇( DaVinci Configurator)从新建工程开始 方法1,直接使用案例工程,一般SIP包会有一个创建好的案例工程,在这样的路径YOUR_SIP_DIR/Applications/SipAddon/StartApplication下面直接打开这个*.dpa文件即可看到已经预先做好的工程:但是,这个也不是全的,也不一定完全正确,至少MCAL是没有配置好的(MCAL是IC厂商提供的,并不归属SIP包的一部分)。这样就需要你自己去配置你想要的模块,修改里面的错误。 阅读详情

1、ArrayList 优点
1)支持自动改变大小的功能
2)可以灵活的插入元素
3)可以灵活的删除元素

二、局限性

跟一般的数组比起来,速度上差些。
因为它是动态数组,初始化大小容量4,当数据存满时扩容是以当前数组容量大小的2倍扩容,之后再把数组元素一个一个的存入,数组在扩容时浪费一定的内存空间,和存储时间,而且,元素添加是一个装箱的过程,所以说,跟一般的数组比起来,速度上差些

总结一下:就是一个动态的数组。做了一层封装.
这里写图片描述

@since 1.2
public class ArrayList extends AbstractList
implements List, RandomAccess, Cloneable, java.io.Serializable

看源码初始化的长度是10

/**
* Constructs an empty list with an initial capacity of ten.
*/
public ArrayList() {
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}

自定义初始化
   public ArrayList(int initialCapacity) {
        if (initialCapacity > 0) {
            this.elementData = new Object[initialCapacity];
        } else if (initialCapacity == 0) {
            this.elementData = EMPTY_ELEMENTDATA;
        } else {
            throw new IllegalArgumentException("Illegal Capacity: "+
                                               initialCapacity);
        }
    } 

传入别的可以向下转化

public ArrayList(Collection<? extends E> c) {
        elementData = c.toArray();
        if ((size = elementData.length) != 0) {
            // c.toArray might (incorrectly) not return Object[] (see 6260652)
            if (elementData.getClass() != Object[].class)
                elementData = Arrays.copyOf(elementData, size, Object[].class);
        } else {
            // replace with empty array.
            this.elementData = EMPTY_ELEMENTDATA;
        }
    }

扩容每次1.5倍

private void grow(int minCapacity) {
        // overflow-conscious code
        int oldCapacity = elementData.length;
        int newCapacity = oldCapacity + (oldCapacity >> 1);
        if (newCapacity - minCapacity < 0)
            newCapacity = minCapacity;
        if (newCapacity - MAX_ARRAY_SIZE > 0)
            newCapacity = hugeCapacity(minCapacity);
        // minCapacity is usually close to size, so this is a win:
        elementData = Arrays.copyOf(elementData, newCapacity);
    }

这里最大为int最大值就是4位 2^32次, 可以看到还是保留了8位 为什么好保留呢?

private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;

接下来看一段源码的注释 vm的数组保留一些标题。
/**
* The maximum size of array to allocate.
* Some VMs reserve some header words in an array.
* Attempts to allocate larger arrays may result in
* OutOfMemoryError: Requested array size exceeds VM limit
*/

为什么先进工艺需要check那么多corner? 那么hold slack = launch clock path delay + data path delay - capture_clock_path_delay = -capture_clock_path_delay,也就是说,capture clock path delay越大,hold越难满足。而且,我们在设计的时候,一般clock频率都会过约,所以是有较大的margin的。有的foundry还会对rc的取值范围进行了约束,如cworst_T,采用的是1.5 sigma的取值范围。 阅读详情

相关推荐

手把手教你用X-AnyLabeling实现医学图像标注:从SAM模型选择到多边形优化全流程

本文详细介绍了如何使用X-AnyLabeling平台结合Med-SAM等专业模型实现医学图像的高效标注。从环境配置、模型部署到实战工作流,涵盖智能辅助标注、低对比度解决方案及团队协作方案,帮助医疗从业者大幅提升标注效率与质量。特别适合处理CT/MRI等医学影像的复杂标注需求。

weixin_29251131的博客 456

JDK1.8 :ArrayList源码学习

记录一下ArrayList 源码学习过程, 如果有错,希望评论指出! ArrayList ~源码学习: 初学的时候只知道其中的方法怎么用,并不太了解其中的实现,所以呢,写篇记录一下学习过程。 1、架构层次: 当进入ArrayList 源码首先看到的就是 : public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess,...

weixin_41901345的博客 526

最优化方法 25:PDHG

前面的章节要么从原始问题出发,要么从对偶问题出发,通过求解近似点或者一个子优化问题进行迭代,而且推导过程中我们发现根据问题的参数特征,比如矩阵 AAA 是瘦高型的还是矮胖型的,采用对偶和原始问题的复杂度会不一样,可以选择一个更简单的。而这一节,我们将要从原始对偶问题出发来优化,什么是原始对偶问题呢?就是原始优化变量和对偶优化变量(原始函数和共轭函数)混合在一块,看下面的原理就知道了。 1. 原始对偶问题 现在考虑原始优化问题,其中 f,gf,gf,g 为闭凸函数 min⁡f(x)+g(Ax) \min \q

Glooow的博客 4601

源码学习——ArrayList

文章目录前言继承关系成员变量构造方法添加添加到列表末尾添加到固定位置添加一个集合删除删除一个元素删除部分元素查看修改 前言 将常用的步骤解释的较为详尽易懂,若有错误麻烦指正。个人认为甚至些许啰嗦,建议有基础的同学直接看源码,源码更为直接了当易懂,且不会产生语句上的歧义。 继承关系 UML 图示 实现 List 接口,属于列表类 实现 RandomAccess 接口,具备快速随机访问的能力。(所有的 list 都可以支持随机访问,但是不一定支持快速随机访问,有的可以通过迭代器,如 linkedList,与

绿水本无忧 357

无人机巡检提速3倍!YOLOv8n+OpenVINO让Jetson Nano跑25FPS,还能多飞25分钟

摘要(149字): 针对无人机巡检中Jetson Nano算力不足导致的帧率低、首次推理延迟高、续航短等问题,提出YOLOv8n+OpenVINO联合优化方案: 模型轻量化:YOLOv8n参数量仅3.2M(较v8s减少71%),Jetson Nano帧率从8FPS提升至15FPS(原生),绝缘子裂纹召回率仅降3%; OpenVINO加速:AUTO模式动态分配CPU/GPU算力,首次推理延迟从500ms降至200ms,帧率再优化至25FPS; 能效提升:功耗降低40%,单次续航延长25分钟。方案已落地电力/林

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1242

基于STM32、HAL库的ZMOD4510AI4R气体传感器驱动程序设计

ZMOD4510AI4R是Renesas公司推出的一款数字空气质量传感器,主要用于检测臭氧(O₃)和总挥发性有机化合物(TVOC)浓度。(status & 0x80)) // 检查数据就绪位。// 等待测量完成 (实际应用中应该使用非阻塞方式)// 转换为ppb (简化转换,实际应根据传感器文档校准)* @param hzmod: ZMOD4510句柄。* @param tvoc: TVOC浓度(ppb)* @param ozone: 臭氧浓度(ppb)* @param hi2c: I2C句柄。

corlin6688的博客 311

Java集合源码学习—ArrayList

ArrayList是一种以数组实现的List,与数组相比,它具有动态扩展的能力,因此也可称之为动态数组。 ArrayList实现了List,提供了基础的添加、删除、遍历等操作。 ArrayList实现了RandomAccess,提供了随机访问的能力。 ArrayList实现了Cloneable,可以被克隆。 ArrayList实现了Serializable,可以被序列化。 1. ArrayList...

江湖人称小程的博客 512

把云端打印带回办公室:通信场景 SAP_COM_0466 打通 SAP BTP ABAP environment 与本地打印机的 Pull Integration 实战

摘要: 本文探讨云端SAP系统如何通过SAP_COM_0466通信场景实现与本地打印机的安全连接。核心方案采用Pull Integration模式,由本地组件(如SAP Cloud Print Manager或第三方OMS)主动从云端打印队列拉取任务,避免网络边界冲突。配置流程涵盖通信安排创建、打印队列绑定及权限管理,并强调队列类型必须选择"Pull Integration Queue"的关键细节。方案通过分离云端生产与本地打印环节,既保障安全性又便于运维监控,适用于SAP BTP AB

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 143

【代码】ArrayList源码学习(jdk17)

【代码】【代码】ArrayList源码学习(jdk17)

weixin_39817683的博客 318

TI Sitara系列AM64x开发板(双核ARM Cortex-A53)软硬件规格书

创龙科技TL64x-EVM是一款基于TI Sitara系列AM64x双核ARM Cortex-A53 + 单/四核Cortex-R5F + 单核Cortex-M4F多核处理器设计的高性能评估板,由核心板和评估底板组成。评估板接口资源丰富,引出5x Ethernet(两路支持TSN)、2x CAN-FD、多路UART、多路DI/DO、GPMC、PCIe、USB等接口,板载WIFI模块,支持4G/5G模块、NVME硬盘,可选配外壳直接应用于工业现场,方便用户快速进行产品方案评估与技术预研。

创龙,嵌入式一体化解决方案商 727

可食用野生植物检测实战:基于YOLOv11的智能识别系统全流程指南

本文介绍了一种基于YOLOv11的可食用野生植物智能识别系统。该系统通过深度学习技术,能在0.2秒内精准识别植物是否可食用,准确率高达92%。文章详细阐述了从数据采集、标注到模型训练、验证的全流程,并开发了用户友好的Tkinter交互界面。该系统解决了户外探险和植物研究中植物识别的痛点,具有高精度、实时性和强泛化能力的特点,为户外安全提供了智能化解决方案。

FJN110的博客 164

集合之ArrayList源码学习

集合之ArrayList源码学习 ArrayList是日常开发经常用到的数据结构,底层是用数组实现的List,相当于单纯的数组相比,ArrayList有动态扩容的能力并提供了很多动态数组的方法。 继承关系 ArrayList继承了AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable等接口。 ArrayList实现了List,提供了基础的添加、删除、查找、遍历等操作。 ArrayList实现了RandomAccess,提供了随

juemuren123的博客 163

PCL 将对象模板与点云对齐【2025最新版】

PCL模版匹配算法的使用案例,博客长期更新,本文最近更新时间为:2025年1月18日。

点云侠的博客 5378

【源码】ArrayList源码学习笔记

目录楔子一、基本数据结构1、缺点2、优点二、核心方法的原理0、基础构造方法1、add方法源码2、set方法源码3、get方法源码4、remove方法源码 楔子 对于Java开发者来说,不管是初级、中级,还是高级,一定都曾经被问道Java集合包里的东西,而ArrayList作为集合包中重要的一员,出现的频率也非常高,今天小七就从源码的角度,重新分析学习下ArrayList。 一、基本数据结构 ArrayList顾名思义,array就是数组的意思。在java中的数组,都是定长数组,所以ArrayList会有定长

洋YANG的博客 1119

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Arraylist源码学习

ArrayList源码 //ArrayList元素存储到的数组缓冲区。 ArrayList的容量是此数组缓冲区的长度。创建ArrayList的时候容量都为0,当add数据时容量将被扩充到指定大小(默认10)。 transient Object[] elementData; //此列表被修改结构的次数。 结构性修改是指更改列表大小,或以其他方式干扰列表进行进度可能会产生不正确结果的方式。 protected transient int modCount = 0; //ArrayList的指针 priva

Sharfine的博客 242

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

JDK源码学习02-ArrayList源码和简单实现

ArrayList源码学习 ArrayList是常用的集合,ArrayList查询效率高,增删效率低 复制数组的重要工具类 # 最常用最重要 特别是原数组与目标数组为同一个数组的时候 System.arraycopy(原数组, 原数组开始索引, 目标数组,目标数组开始索引, 复制长度); # 拷贝原数组前newLength个元素生成一个新数组 public static T[] copyOf(T[] original, int newLength) #

qq_45117655的博客 244

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

学习笔记ArrayList源码学习

小白学习笔记第一天 ArrayList源码学习 继承自AbstractList,实现了List接口 private static final int DEFAULT_CAPACITY = 10 默认容量为10 transient Object[] elementData 底层使用Object数组来存储数据 ArrayList(int initialCapacity) 构造函数指定特定的容量大小 v...

旭旭1998的博客 6万+

学习ArrayList源码

ArrayList源码理解 jdk1.8 主要的几个方法理解 属性 /** * 默认初始容量。 */ private static final int DEFAULT_CAPACITY = 10; /** * 当new ArrayList(0);的时候默认初始空数组实例。 */ private static final Object[] EMPTY_ELEMENTDATA = {}; /** * 当new Ar

热心市民小王的博客 111

Java源码学习之ArrayList

Java源码学习之ArrayList package java.util; import java.util.function.Consumer; import java.util.function.Predicate; import java.util.function.UnaryOperator; public class ArrayList<E> extends Abstra...

Little_fxc的博客 168
上一篇: B树研究
下一篇: Mysql索引整理
行者man
博客等级 码龄11年 63粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值