關於ArrayList的幾點說明__ArrayList

來源:互聯網
上載者:User

數組在初始化的要向記憶體申請空間,數組在定義時必須要進行初始化,如果長度確定直接初始化其長度,例如: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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.