ArrayList通过ensureCapacity方法提高效率

每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。并未指定增长策略的细节,因为这不只是添加元素会带来分摊固定时间开销那样简单。

在添加大量元素前,应用程序可以使用 ensureCapacity 操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。

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");
}
I Don't Want Your Money, I Want Aragaki Yui.