当前位置:网站首页>集合---ArrayList的底层
集合---ArrayList的底层
2022-08-04 05:30:00 【Tokey_W】
目录
4.用于默认大小的空实例的共享空数组实例。了解添加第一个元素时要膨胀多少
5.存储 ArrayList 元素的数组缓冲区(存储数据的)
前言
ArrayList ---Array表示数组,List表示列表。表示了ArrayList底层使用数组实现的,所以ArrayList具备数组的所有特性。
数组的特性:
数组是有序排列的
数组的引用数类型。但是数组的元素可以是基本数类型,也可以是引用数据类型
开辟数组会在内存中开辟一块连续的空间
数组的长度一旦确定就不可以修改
数组元素必须是同一种数组类型
正是因为数组,一旦指定 长度就不能修改
以及只能存储一种数据类型的缺点,引入了集合
ArrayList是动态数组,初始化时可以不定义长度,在JVM判断ArrayList容量不足时,会自动扩容数组。
一、ArrayList的接口和继承的父类

二、ArrayList的重要属性
1. 序列号版本UID

2.默认初始化容量

3.用于空实例的共享空数组实例(减少数组的创建)
有参构造器时候取代一个空数组的建立,就是你传入的 initialCapacity 为 0 或者集合类为空的时候,复用 EMPTY_ELEMENTDATA 即可
那它作用就很明显了,为了减少空数组的建立,空数组大家共享一个嘛
4.用于默认大小的空实例的共享空数组实例。了解添加第一个元素时要膨胀多少
确保空参构造器时候初始化的容量等于 DEFAULT_CAPACITY, (一般用在扩容和初始化)
5.存储 ArrayList 元素的数组缓冲区(存储数据的)
![]()
6.集合长度
二、ArrayList的三个构造方法
1.无参构造
ArrayList中是使用数组对数据进行存储,因为我们没有添加数据所以是使用一个length为0的数组,我们使用这个private static final DEFAULTCAPACITY_EMPTY_ELEMENTDATA 空的Object[]常量数组 这样就减少了数组的创建了
2.有参构造

3.将其他类型数组转为ArrayList

三、ArrayList的添加与扩容
添加方法add

判断加入一个数据后的容量是否需要扩容
![]()
计算容量


扩容
总结
1.ArrayList的底层是数组 、
2.ArrayList的扩容是1.5倍的扩容
3.ArrayList是线程不安全的,没有synchronized关键字修饰
4.vector与ArrayList基本相同,它是线程安全的,有synchronized关键字修饰方法
5.jdk8的ArrayList刚开始创建是空数组 只要添加数据的时候才会进行加入容量默认10
边栏推荐
猜你喜欢

MNIST手写数字识别 —— Lenet-5首个商用级别卷积神经网络

PyTorch

arm交叉编译

亚马逊云科技Build On-Amazon Neptune基于知识图谱的推荐模型构建心得

LeetCode_Dec_3rd_Week

How to get started with MOOSE platform - an example of how to run the official tutorial

AWS uses EC2 to reduce the training cost of DeepRacer: DeepRacer-for-cloud practical operation

Golang environment variable settings (2)--GOMODULE & GOPROXY

迅雷关闭自动更新

Copy Siege Lion 5-minute online experience MindIR format model generation
随机推荐
LeetCode_Nov_3rd_Week
度量学习(Metric learning)—— 基于分类损失函数(softmax、交叉熵、cosface、arcface)
FAREWARE ADDRESS
【论文阅读】Mining Cross-Image Semantics for Weakly Supervised Semantic Segmentation
No matching function for call to ‘RCTBridgeModuleNameForClass‘
机器学习——分类问题对于文字标签的处理(特征工程)
ValueError: Expected 96 from C header, got 88 from PyObject
光条中心提取方法总结(二)
关于DG(域泛化)领域的PCL方法的代码实例
MNIST手写数字识别 —— ResNet-经典卷积神经网络
sbl_init.asm-适合在编辑模式下看
【CV-Learning】Convolutional Neural Network
2020-10-29
卷积神经网络入门详解
MNIST handwritten digit recognition, sorted by from two to ten
计算某像素点法线
图像合并水平拼接
【代码学习】
第二章 STA相关概念
光条中心提取方法总结(一)

