关于ArrayList
2024-09-05 13:19:27
List概述
List是一个列表结构抽象定义,有序的,可对其中每个元素的插入位置进行精确地控制,可以通过索引来访问元素,遍历元素。包括函数的有:添加元素,删除元素,判断是否包含元素等等重要函数。
ArrayList
概述
ArrayList的底层数据结构是用数据结构实现得,申请的内存是连续得,访问数据比较快。添加元素时,如果JVM连续内存不足执行垃圾回收。添加元素大于数组大小,ArrayList会创建新数组并且老数组里元素复制到新数组中,然后添加新元素到最后一个元素后面。
类图
构造
实例化ArrayList对象时,并不知道要List的大小边界,此时可以使用一个无参数构造函数,ArrayList中有一个类型为Object[]的DEFAULTCAPACITY_EMPTY_ELEMENTDATA空数组,DEFAULTCAPACITY_EMPTY_ELEMENTDATA赋值给元素存储对象数组elementData。
若知道边界大小实例化ArrayList时,使用带初始容量initalCapacity的构造函数。initalCapacity>0时,数组长度为initalCapacity;initalCapacity=0,数组为一个空数组;initalCapacity<0,抛出IllegalArgumentException异常。见如下源码:
size变量
指明ArrayList实例当前含有多少元素。
元素添加
使用无索引的add函数进行说明。首先ensureCapacityInternal函数确认内部容量大小
ensureCapacityInternal 调用calculateCapacity函数计算容量大小。
calculateCapacity函数功能计
最新文章
- Consul的一个更新:服务端节点故障后重连
- Analyzer报表结果行
- Find Minimum in Rotated Sorted Array II leetcode
- 在Linux命令行下令人惊叹的惊叹号(!)
- C# 动态执行批处理命令
- homework-02 ";最大子数组之和";的问题进阶
- mybatis05 用户添加
- RSA实践指南
- PHP字符串常用操作
- UITableViewCell嵌套UITableView的正确姿势
- 个人对stm32ADC编程关键点的理解
- pat1003 迪杰斯特拉法和dfs求最短路
- Linux进程间通信(System V) --- 共享内存
- (2)HomeAssistant 参数配置
- stm32 中断号和中断处理函数建立关系
- Swift 静态派发和动态派发
- Codeforces 1053 C - Putting Boxes Together
- 浅析iOS程序设计模式(基于MVC)
- Java GC的原理
- Flume-NG一些注意事项(转)
热门文章
- Spring boot + mybatis + dubbo + zookeeper + mysql + mybatis-generator 一个小demo
- Python列表(list)所有元素的同一操作
- lightGBM gpu环境配置
- spring Boot 学习(八、Spring Boot与与监控管理)
- C# Mysql数据库备份、还原(MVC)
- APS.NET MVC + EF (02)---深入理解ADO.NET Entity Framework
- vs2017添加引用提示“找不到 Microsoft.VisualStudio.Shell.Interop.IVsReferenceManager 服务的实例”解决方案
- java 枚举示例
- 2019 找钢网java面试笔试题 (含面试题解析)
- (一)类型转换 is 和 as