1. 程式人生 > >集合效能 -- 請為集合ArrayList指定初始容量

集合效能 -- 請為集合ArrayList指定初始容量

package com.sheting.basic.collection.capcity;

import java.util.ArrayList;
import java.util.List;

public class TestArrayList{

    public static void main(String[] args) {

        long begin1 = System.currentTimeMillis();
        List<String> list1 = new ArrayList<>();
        for (int
i = 0; i < 1000000; i++) { list1.add(new String(i + "")); } long end1 = System.currentTimeMillis(); System.out.println("list1 time:" + (end1 - begin1)); long begin2 = System.currentTimeMillis(); List<String> list2 = new ArrayList<>(1000000); for
(int i = 0; i < 1000000; i++) { list2.add(new String(i + "")); } long end2 = System.currentTimeMillis(); System.out.println("list2 time:" + (end2 - begin2)); } }

執行結果:

list1 time246
list2 time124

上面程式碼兩個list分別新增1000000個元素,list1沒有指定初始容量, 耗時幾乎是list2的一倍.

因此, 對於已知的情景,請為集合指定初始容量

ArrayList每次新增一個元素,就會檢測ArrayList的當前容量是否已經到達臨界點,如果到達臨界點則會擴容2倍。然而ArrayList的擴容以及陣列的拷貝生成新的陣列是相當耗資源的.