請看代碼:
package test;
import java.util.ArrayList;
public class EnsureCapacityTest {
public static void main(String[] args){
final int N = 1000000;
Object obj = new Object();
//沒用調用ensureCapacity()方法初始化ArrayList對象
ArrayList list = new ArrayList();
long startTime = System.currentTimeMillis();
for(int i=0;i<=N;i++){
list.add(obj);
}
long endTime = System.currentTimeMillis();
System.out.println("沒有調用ensureCapacity()方法所用時間:" + (endTime - startTime) + "ms");
//調用ensureCapacity()方法初始化ArrayList對象
list = new ArrayList();
startTime = System.currentTimeMillis();
list.ensureCapacity(N);//預先設置list的大小
for(int i=0;i<=N;i++){
list.add(obj);
}
endTime = System.currentTimeMillis();
System.out.println("調用ensureCapacity()方法所用時間:" + (endTime - startTime) + "ms");
}
}
輸出結果:
沒有調用ensureCapacity()方法所用時間:110ms
調用ensureCapacity()方法所用時間:31ms
結果顯而易見,在N的值很大的時候,使用ensureCapacity()方法可大大提高效率;而當N的值較小時,則所用時間差距不明顯,這裏就不在贅訴,如果感興趣,各位網友可以自己試試。