Java進階(四十六)簡述ArrayList、Vector與LinkedList的異同點

      網友投稿 665 2022-05-30

      Collection類的繼承圖如下:

      從圖中可以看出,LinkedList與ArrayList、ArrayDeque這三者都實現了List接口.所有使用方式也很相似,主要區別在于因為實現方式的不同,所以對不同的操作具有不同的效率。

      ArrayList是一個可改變大小的數組.當更多的元素加入到ArrayList中時,其大小將會動態地增長。內部的元素可以直接通過get與set方法進行訪問,因為ArrayList本質上就是一個數組。

      List arrayList = new ArrayList();

      如果像上面這樣使用默認的構造方法,初始容量被設置為10。當ArrayList中的元素超過10個以后,會重新分配內存空間,使數組的大小增長到16??梢酝ㄟ^調試看到動態增長的數量變化:10->16->25->38->58->88->…(增長幅度為:len/2 + 1)

      Java進階(四十六)簡述ArrayList、Vector與LinkedList的異同點

      LinkedList是一個雙鏈表,在添加和刪除元素時具有比ArrayList更好的性能.但在get與set方面弱于ArrayList。

      當然,這些對比都是指數據量很大或者操作很頻繁的情況下的對比,如果數據和運算量很小,那么對比將失去意義。

      Vector和ArrayList類似,但屬于強同步類。如果你的程序本身是線程安全的(thread-safe,沒有在多個線程之間共享同一個集合/對象),那么使用ArrayList是更好的選擇。

      Vector和ArrayList在更多元素添加進來時會請求更大的空間。Vector每次請求其大小的雙倍空間,而ArrayList每次對size增長50%。而LinkedList還實現了Queue接口,該接口比List提供了更多的方法,包括

      offer(),peek(),poll()等。

      注意: 默認情況下ArrayList的初始容量非常小,所以如果可以預估數據量的話,分配一個較大的初始值屬于最佳實踐,這樣可以減少調整大小的開銷。

      LinkedList與ArrayList、ArrayDeque的實現機制完全不同,ArrayList、ArrayDeque內部以數組的形式來保存集合中的元素,因此隨機訪問集合元素時有較好的性能;而LinkedList內部以鏈表的形式來保存集合中的元素,因此隨機訪問集合元素時性能較差,但在插入、刪除元素時性能非常出色(只需改變指針所指的地址即可)。

      如果需要遍歷List集合元素,對于ArrayList、Vector集合,應該使用隨機訪問方法(get)來遍歷集合元素,這樣性能更好;對于LinkedList集合,則應該采用迭代器(Iterator)來遍歷集合元素;

      如果需要經常執行插入、刪除操作來改變List集合的大小,則應該使用LinkedList集合,而不是ArrayList。使用ArrayList、Vector集合需要經常重新分配內部數組的大小,其時間開銷往往是使用LinkedList的幾十倍,效果更差;

      如果有多個線程需要同時訪問List集合中的元素,開發者可考慮使用Collections工具類將集合包裝成線程安全的集合。

      Java 數據結構

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:紫荊云視-視頻云會議整體解決方案
      下一篇:Python:pendulum庫處理時間
      相關文章
      亚洲美女视频一区| 亚洲国产a∨无码中文777| 亚洲精品国产成人中文| 亚洲AV午夜福利精品一区二区 | 亚洲欧洲日韩极速播放 | 亚洲五月综合缴情在线观看| 亚洲午夜av影院| 三上悠亚亚洲一区高清| 国产偷国产偷亚洲高清日韩 | 亚洲女人初试黑人巨高清| 亚洲午夜国产精品| 亚洲喷奶水中文字幕电影| 亚洲一区中文字幕在线观看| 亚洲人成网网址在线看| 91亚洲精品麻豆| 亚洲人成综合网站7777香蕉| 亚洲精品中文字幕无乱码麻豆| 亚洲中文字幕一二三四区苍井空| 中文字幕乱码亚洲无线三区| 亚洲精品久久无码| 国产精品亚洲一区二区三区在线观看 | 亚洲色一区二区三区四区 | 亚洲国产精品无码专区在线观看| 亚洲va久久久噜噜噜久久| 亚洲大片在线观看| 亚洲精品在线视频观看| 亚洲国产中文在线二区三区免| 中文字幕 亚洲 有码 在线| 亚洲日本VA午夜在线电影| 久久水蜜桃亚洲AV无码精品| 亚洲av无码成人精品区在线播放 | 亚洲高清无在码在线电影不卡| 亚洲伊人久久大香线蕉| 亚洲色最新高清av网站| 亚洲a无码综合a国产av中文| 亚洲日韩VA无码中文字幕| 国产av无码专区亚洲av桃花庵| 色播亚洲视频在线观看| 亚洲1234区乱码| 无码天堂亚洲国产AV| 亚洲午夜久久久久久久久久|