ArrayList 源码分析-01

本文深入分析了ArrayList的底层实现,它基于object数组存储数据,提供增删改查功能。ArrayList的扩容机制是通过创建1.5倍大小的新数组并复制原有数据,这一过程可能导致性能损耗。增加和删除元素时,由于数组移动操作,效率较低;而查询操作因其直接访问数组下标的特性,速度较快。因此,ArrayList适合查询频繁、修改较少的场景。
摘要由CSDN通过智能技术生成

ArrayList 源码分析

1. ArrayList 概述
	ArrayList的底层采用的是object类型数组形式,用来进行object类型数据的存储,作为一个数组队列,它继承于
AbstractList,提供了增删改查的功能。
	ArrayList具有通过grow方法来进行扩容操作的特性,通常扩容比大约是原数组的的1.5倍,数组容量在创建伊
始它的容量便是固定的,无法增加或者减少。所以扩容的过程并非直接增加原数组的容量,而是首先创建一
个大约是原数组容量1.5倍的新数组,然后再把原数组中的数据复制到新数组中,之后,原数组会被自动回收,
这个过程非常的浪费时间。
ArrayList特征是一个重要的知识点,它拥有增删慢且查询快的特点:
	增加慢:
		1, 有可能触发扩容操作。在扩容方法操作中,从原数组拷贝数据到新数组浪费时间,同时在扩容操作会出
		现无效内存销毁问题,上文中已经做出解释,同样浪费时间。
		2. 插入数据到指定下标位置,从插入位置开始,数组中的其他数据会整体向后移动。移动操作浪费时间。
	删除慢:
		1. 删除指定下标元素,数组中的元素整体向前移动。
		2. 删除元素较多情况下,会导致空间冗余。空间效率较低
	查询快:
	ArrayList的底层数据操作方式和数组操作方式相同,直接通过数组名和下标来获取对应元素的操作方式效率
	很高,是对特定地址的直接访问操作,通俗来说就是直中要害,一针见血!!!

附:数组内存地址分析图
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值