欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ArrayList源码分析(2)

程序员文章站 2022-07-14 12:05:50
...

1. ArrayList 可变长数组

ArrayList概述

ArrayList底层采用数组形式进行数据保存和处理。底层数组为Object类型,可以存储任意类型数据。存储对应具体数据类型通过创建ArrayList类对象约束,因为所有的添加操作都是通过该add和addAll方法完成的。
	可变长数组是通过grow方法来进行底层数组容量扩容操作。扩容比例大约是原数组的1.5倍
	ArrayList特征:【重点】
		增删慢,查询快
	特有方法:	
		可以使用所有的List集合对应方法。
		了解两个特殊方法:
			trimToSize();
				当前底层数组容量缩小至有效元素个数,节约内存空间。时间换空间 
			ensureCapacity(int capacity);
				判断当前容量是否满足需求

特征分析

增删慢:
	增加慢:
		1, 有可能触发扩容操作。在扩容方法操作中,从原数组拷贝数据到新数组浪费时间,同时在扩容操作会出现无效内
		存销毁问题,同样浪费时间。
		2. 插入数据到指定下标位置,从插入位置开始,数组中的其他数据会整体向后移动。移动操作浪费时间。
	删除慢:
		1. 删除指定下标元素,数组中的元素整体向前移动。
		2. 删除元素较多情况下,会导致空间冗余。空间效率较低
		
查询快:
	【寻址操作】
	ArrayList底层数据操作方式为数组方式,数组+下标获取对应元素的操作效率是非常高!!!是CPU根据对应【地址】直接访问操作。
相关标签: java