Java集合的性能和使用場景分析

1、List使用場景

List的框架圖

上圖中有接口、抽象類和實現(xiàn)類,可以看到:

  • List 是一個接口,它繼承于Collection的接口,它代表著有序的隊列
  • AbstractList 是一個抽象類,它繼承于AbstractCollection;AbstractList實現(xiàn)List接口中除size()、get(int location)之外的函數(shù)
  • AbstractSequentialList 是一個抽象類,它繼承于AbstractList。AbstractSequentialList 實現(xiàn)了“鏈表中,根據(jù)index索引值操作鏈表的全部函數(shù)”
  • ArrayList, LinkedList, Vector, Stack是List的4個實現(xiàn)類
    ArrayList是一個數(shù)組隊列,相當于動態(tài)數(shù)組。它由數(shù)組實現(xiàn),隨機訪問效率高,隨機插入、隨機刪除效率低
    LinkedList是一個雙向鏈表。它也可以被當作堆棧、隊列或雙端隊列進行操作。LinkedList隨機訪問效率低,但隨機插入、隨機刪除效率高
    Vector是矢量隊列,和ArrayList一樣,它也是一個動態(tài)數(shù)組,由數(shù)組實現(xiàn);但是ArrayList是非線程安全的,而Vector是線程安全的
    Stack是棧,它繼承于Vector。它的特性是:先進后出(FILO, First In Last Out)
使用場景

(1) 對于需要快速插入,刪除元素,應該使用LinkedList;
(2) 對于需要快速隨機訪問元素,應該使用ArrayList;
(3) 對于“單線程環(huán)境” 或者 “多線程環(huán)境,但List僅僅只會被單個線程操作”,此時應該使用非同步的類(如ArrayList);
(4) 對于“多線程環(huán)境,且List可能同時被多個線程操作”,此時,應該使用同步的類(如Vector)。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容