【文件属性】:
文件名称:Collections源码java-Java-Collections-Resize-Logic-Note:从源码角度分析Java中常用集合类的
文件大小:13KB
文件格式:ZIP
更新时间:2021-05-19 13:30:50
系统开源
Collections
源码
java
Java中集合的扩容策略及实现
从源码角度分析Java中常用集合类的扩容机制
从这一篇开始,会陆续通过笔记来整理和记录之前看过的各种Java集合相关的知识点,主要包括List和Map。今天这一篇主要整理一下集合扩容相关的知识,涉及到的集合框架有:HashMap,ArrayMap,SparseArray,ArrayList,Vector。下面先从ArrayList开始。
ArrayList
ArrayList是以数组实现的一个集合类,在ArrayList的源码中可以看到,所有元素都是被储存在elementData这个全局的数组变量中,而所谓的扩容也是针对这个数组对象进行操作。具体来说,当一个添加元素的动作,即add或addAll被执行时,都会先调用ensureCapacityInternal(...)方法进行容量预检,如果当前elementData数组的容量不足以完成本次添加操作便会进行自动扩容。该方法代码如下:
//这是一个私有方法,ArrayList提供了另一个public的扩容方法ensureCapacity以满足外界手动扩容的需求
//
【文件预览】:
Java-Collections-Resize-Logic-Note-master
----README.md(36KB)