數組在初始化的要向記憶體申請空間,數組在定義時必須要進行初始化,如果長度確定直接初始化其長度,例如:String[] str = new String[2],如果數組長度不確定就使用集合類ArrayList,先定義ArrayList array = new ArrayList();建立好對象後調用add方法向其中添加資料。
下面來詳細介紹一下java.util.ArrayList
List介面的大小可變數組的實現。實現了所有可選列表操作包括null。add操作以分攤的固定時間運行,添加n個元素需要O(n)時間。ArrayList的容量不是固定的,他可以隨著ArrayList中不斷添加元素其容量也自動成長。他的容量至少等於列表大小。
在添加大量元素前,應用程式可以使用ensureCapacity操作來增加ArrayList執行個體容量。這可減少遞增式再分配的數量。次實現不是同步的。如果多個線程同時訪問一個ArrayList執行個體,而其中至少一個線程從結構上修改了列表,那麼他必須保持外部同步。一般通過對自然封裝該列表的對象進行同步操作。
這最好在建立時完成,以防止意外對列表進行不同步的訪問:
List list = Collections.synchronizedList(new ArrayList(…))
此類的 iterator 和 listIterator 方法返回的迭代器是快速失敗的:在建立迭代器之後,除非通過迭代器自身的 remove 或 add 方法從結構上對列表進行修改,否則在任何時間以任何方式對列表進行修改,迭代器都會拋出 ConcurrentModificationException。因此,面對並發的修改,迭代器很快就會完全失敗,而不是冒著在將來某個不確定時間發生任意不確定行為的風險。
下面來說一下的ensureCapacity的使用情境:
如果要增加的資料量很大,應該使用ensureCapacity()方法,該方法的作用是預先設定Arraylist的大小,這樣可以大大提高初始化速度。
使用方法時ensureCapacity(int minCapacity)