首页 > 试题广场 >

JDK1.8中,执行以上程序后,该list进行了几次扩容?(

[单选题]

JDK1.8中,执行以上程序后,该list进行了几次扩容?() 

import java.util.ArrayList;

import java.util.List;

public class Main {

    public static void main(String[] args) {

        List<String> list = new ArrayList<>();

        for(int i=0;i<100;i++){

            list.add("a");

        }

    }

}

  • 4
  • 5
  • 6
  • 7
初始长度16;扩容因子3/4;扩容倍数3/2
即,当元素增加到当前长度的3/4处时,就需要进行数组长度扩容,并扩容当前长度的3/2倍,所以第五次的扩容数组长度超过了100;但是在92的时候,就触发了扩容因子,所以就需要再进行一次扩容,所以一共六次!
发表于 2021-07-14 15:51:52 回复(1)
正确答案:6次

解释:

初始化

ArrayList的底层是一个动态数组,ArrayList首先会对传进来的初始化参数initalCapacity进行判断

如果参数等于0,则将数组初始化为一个空数组,
如果不等于0,将数组初始化为一个容量为10的数组。

扩容时机

当数组的大小大于初始容量的时候(比如初始为10,当添加第11个元素的时候),就会进行扩容,新的容量为旧的容量的1.5倍。

10x1.5x1.5x1.5x1.5x1.5=75
10x1.5x1.5x1.5x1.5x1.5x1.5=113
发表于 2021-07-06 17:40:39 回复(0)