當List<String> list =new ArrayList<String>(20); 他會擴容多少次?
A 0 B 1 C 2 D 3
答案是A: 因為這個集合調用的是ArryList的有參構造, 咱們可以看一下ArryList的有參構造。
public ArrayList(int initialCapacity) { if (initialCapacity > 0) { this.elementData = new Object[initialCapacity]; } else if (initialCapacity == 0) { this.elementData = EMPTY_ELEMENTDATA; } else { throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); } }
1.ArrayList有參構造的參數initialCapacity就是集合的初始容量。 如果我們在實例化有參構造時賦的參數大於20。 他會走 if, 也就是把初始容量賦成你傳入的值了。
2.else if和ArryList的無參構造作用是一樣的。把初始容量設置成了EMPTY_ELEMENTDATA也就是10。
3.else那就是其他不在預算范圍內的情況,他會出現IllegalArgumentException異常。

