电话网站源码,长沙个人做网站,wordpress 网页抓取,做网站建设怎么找客户16. ArrayList list new ArrayList(20);中的list扩充几次#xff08;#xff09;
A 0 B 1 C 2 D 3
答案#xff1a;A ArrayList动态扩容机制 初始化#xff1a;有三种方式 默认的构造器#xff0c;将会以默认的大小来初始化内部的数组#xff1a;public …16. ArrayList list new ArrayList(20);中的list扩充几次
A 0 B 1 C 2 D 3
答案A ArrayList动态扩容机制 初始化有三种方式 默认的构造器将会以默认的大小来初始化内部的数组public ArrayList(); 用一个ICollection对象来构造并将该集合的元素添加到ArrayListpublic 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.515 当添加第16个数据时继续扩容变为15 * 1.5 22个 总结在JDK1.7中如果通过无参构造的话初始数组容量为0当真正对数组进行添加时才真正分配容量。每次按照1.5倍位运算的比率通过copeOf的方式扩容。 在JKD1.6中如果通过无参构造的话初始数组容量为10.每次通过copeOf的方式扩容后容量为原来的1.5倍加1.以上就是动态扩容的原理。