ArrayList扩容机制
2017-12-13 23:37
239 查看
ArrayList list = new ArrayList(20);中的list扩充几次(A)
A 0 B 1 C 2 D 3
PS:
ArrayList初始化:有三种方式
默认的构造器,将会以默认的大小来初始化内部的数组:public ArrayList();
用一个ICollection对象来构造,并将该集合的元素添加到ArrayList: public ArrayList(Collection<? extends E> c)
用指定的大小来初始化内部的数组: public ArrayList(int initialCapacity)
这里我们来重点关注一下无参数构造器的实现过程:
通过代码可是它的初始容量为0。而在之前JDK1,6中,初始容量为10。
发生扩容的条件:
根据传入的最小需要容量minCapacity来和数组的容量长度对比,若minCapactity大于或等于数组容量,则需要进行扩容。(如果实际存储数组是空数组,则最小需要容量就是默认容量)
实现扩容:
jdk7中采用>>位运算,右移动一位。 容量相当于扩大了1.5倍;
举例说明:添加20个元素到ArrayList中
当第一次插入元素时才分配10(默认)个对象空间。之后扩容会按照1.5倍增长。
也就是当添加第11个数据的时候,Arraylist继续扩容变为10*1.5=15;
当添加第16个数据时,继续扩容变为15 * 1.5 =22个;
总结:
在JDK1.7中,如果通过无参构造的话,初始数组容量为0,当真正对数组进行添加时,才真正分配容量。
每次按照1.5倍(位运算)的比率通过copeOf的方式扩容。
在JKD1.6中,如果通过无参构造的话,初始数组容量为10.每次通过copeOf的方式扩容后容量为原来的1.5倍加1.以上就是动态扩容的原理。
本文引自小蜗爬爬的博客,原文地址:
http://www.cnblogs.com/zhaojinxin/p/6748009.html
A 0 B 1 C 2 D 3
PS:
ArrayList初始化:有三种方式
默认的构造器,将会以默认的大小来初始化内部的数组:public ArrayList();
用一个ICollection对象来构造,并将该集合的元素添加到ArrayList: public ArrayList(Collection<? extends E> c)
用指定的大小来初始化内部的数组: public ArrayList(int initialCapacity)
这里我们来重点关注一下无参数构造器的实现过程:
通过代码可是它的初始容量为0。而在之前JDK1,6中,初始容量为10。
发生扩容的条件:
根据传入的最小需要容量minCapacity来和数组的容量长度对比,若minCapactity大于或等于数组容量,则需要进行扩容。(如果实际存储数组是空数组,则最小需要容量就是默认容量)
实现扩容:
jdk7中采用>>位运算,右移动一位。 容量相当于扩大了1.5倍;
举例说明:添加20个元素到ArrayList中
当第一次插入元素时才分配10(默认)个对象空间。之后扩容会按照1.5倍增长。
也就是当添加第11个数据的时候,Arraylist继续扩容变为10*1.5=15;
当添加第16个数据时,继续扩容变为15 * 1.5 =22个;
总结:
在JDK1.7中,如果通过无参构造的话,初始数组容量为0,当真正对数组进行添加时,才真正分配容量。
每次按照1.5倍(位运算)的比率通过copeOf的方式扩容。
在JKD1.6中,如果通过无参构造的话,初始数组容量为10.每次通过copeOf的方式扩容后容量为原来的1.5倍加1.以上就是动态扩容的原理。
本文引自小蜗爬爬的博客,原文地址:
http://www.cnblogs.com/zhaojinxin/p/6748009.html
相关文章推荐
- ArrayList和Vector的扩容机制
- ArrayList的扩容机制
- ArrayList和Vector的扩容机制
- ArrayList的扩容机制
- ArrayList和Vector的扩容机制
- 浅谈JAVA中HashMap、ArrayList、StringBuilder等的扩容机制
- ArrayList的动态扩容机制
- 对Java ArrayList的自动扩容机制示例讲解
- Java细节与规范:ArrayList为何建议赋予默认值及其扩容机制
- ArrayList和Vector的扩容机制
- ArrayList源码解析(二)自动扩容机制与add操作
- ArrayList,HashMap,LinkedList 初始化大小和 扩容机制
- Java ArrayList的自动扩容机制
- JDK1.7——ArrayList扩容机制
- ArrayList简介及扩容机制
- ArrayList和Vector的扩容机制
- ArrayList 原理、 扩容机制
- 关于ArrayList扩容机制
- ArrayList集合底层源代码展示以及结构解析,扩容机制
- java源码分析(1)---------ArrayList的扩容机制