当前位置:网站首页>集合---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
边栏推荐
猜你喜欢
随机推荐
动手学深度学习__数据操作
图像线性融合
[Deep Learning Diary] Day 1: Hello world, Hello CNN MNIST
双向LSTM
在AWS-EC2中安装Minikube集群
Amazon Cloud Technology Build On-Amazon Neptune's Knowledge Graph-Based Recommendation Model Building Experience
卷积神经网络入门详解
ConnectionRefusedError: [Errno 111] Connection refused问题解决
【论文阅读】Exploring Spatial Significance via Hybrid Pyramidal Graph Network for Vehicle Re-identificatio
JPEG2jpg
安装pyspider后运行pyspider all后遇到的问题
亚马逊云科技 Build On 2022 - AIot 第二季物联网专场实验心得
第三章 标准单元库(下)
MNIST Handwritten Digit Recognition - From Perceptrons to Convolutional Neural Networks
PyTorch
深度学习理论 —— 初始化、参数调节
CSDN spree -- college round table spree
光条中心提取方法总结(一)
Code to celebrate the Dragon Boat Festival - Zongzi, your heart
Halcon缺陷检测