- 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");
}
}
}
正確答案: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