1987WEB视界-分享互联网热点话题和事件

您现在的位置是:首页 > WEB开发 > 正文

WEB开发

java中ArrayList集合的扩容机制

1987web2024-03-25WEB开发39

710

1、扩容要看添加方法,从属性中可以看出有一个DEFAULT_CAPACITY属性值10。

publicbooleanadd(Ee){//验证是否需要扩容操作ensureCapacityInternal(size+1);//IncrementsmodCount!!//在对应的下标下添加值elementData[size++]=e;returntrue;

2、刚刚进入ensureCapacityInternal(size+1)size是一个完整的变量。

标记了ArrayList的大小(包含的元素数),而此时没有元素的是ensureCapacityInternal(0+1)。

//1、进入这个方法privatevoidensureCapacityInternal(intminCapacity){//2、先调用calculateCapacity(elementData,minCapacity)、这个方法就是检查第一次添加数据、并返回默认的容器大小(就是10)//4、就是执行这个方法ensureExplicitCapacity(10)//为什么参数是10、就是因为这个方法calculateCapacity(elementData,minCapacity)做了操作。ensureExplicitCapacity(calculateCapacity(elementData,minCapacity));//3、数组容量计算privatestaticintcalculateCapacity(Object[]elementData,intminCapacity){//这个能处理就是第一次添加数据时为真if(elementData==DEFAULTCAPACITY_EMPTY_ELEMENTDATA){//然后这个成立、这个方法是取参数1和参数2、两个数之间的最大值//DEFAULT_CAPACITY:默认为10//minCapacity:第一次添加数据为1//所以10和1、10大、最后将10返回出去returnMath.max(DEFAULT_CAPACITY,minCapacity);returnminCapacity;//5、确保显式容量privatevoidensureExplicitCapacity(intminCapacity){modCount++;//6、做判断、//第一次添加数据时为10-0>0:第一次可以成立//第二次添加数据时为2-10>0:第二次可以不成立if(minCapacity-elementData.length>0)//7、执行下面方法、这个方法的作用才是正真的实施扩容并确定首次扩容ArrayList容器大小的方法grow(minCapacity);//扩容

以上就是java中ArrayList集合的扩容机制,希望对大家有所帮助。更多Java学习指路:Java基础

声明:本站所有文章,如无特殊说明或标注,均为爬虫抓取以及网友投稿,版权归原作者所有。