欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

ArrayList list = new ArrayList(20);中的list扩充几次

发布时间:2025/3/11 编程问答 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 ArrayList list = new ArrayList(20);中的list扩充几次 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

16. ArrayList list = new ArrayList(20);中的list扩充几次()

A 0     B 1     C 2      D 3

答案:A

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.以上就是动态扩容的原理。

    总结

    以上是生活随笔为你收集整理的ArrayList list = new ArrayList(20);中的list扩充几次的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。