ArrayList源码分析

  • A+
所属分类:Java

ArrayList源码分析

概述

ArrayList 是基于数组实现的,所以支持快速随机访问。其继承于AbstractList抽象类,实现了RandomAccess 接口,标识着该类支持快速随机访问。

内部数组:

数组的默认大小为 10。

add()方法

在调用add()方法时,首先调用ensureCapacityInternal() 方法来保证容量足够,如果不够时,需要使用 grow() 方法进行扩容,新容量的大小为 oldCapacity + (oldCapacity >> 1),也就是旧容量的 1.5 倍。并会使用Arrays.copyOf() 将原数组整个复制到新数组中。之后才将新元素插入。

 

remove()方法

在调用remove()方法时,会使用System.arraycopy() 将index之后的元素复制到index的位置上,开销很大。

 

LTXU

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: