Stack,ArrayDeque,LinkedList的區別


    本文首發於cartoon的博客

    轉載請注明出處:https://cartoonyu.github.io/cartoon-blog

    這段時間把瘋狂JAVA再看了一遍,發現Stack,ArrayDeque,LinkedList都可以作為棧使用,所以就稍微從性能以及實現的細節對比這三者的區別。

類繼承樹

區別

底層數據存儲方式

  存儲方式
Stack 長度為10的數組
ArrayDeque 長度為16的數組
LinkedList 鏈表

方法參照表

Stack ArrayDeque LinkedList
push(e) addFirst(e)/offerFirst(e) addFirst(e)/offerFirst(e)
pop() removeFirst()/pollFirst() removeFirst()/pollFirst()
peek() getFirst()/peekFirst() getFirst()/peekFirst()

線程安全

  線程安全
Stack 線程同步
ArrayDeque 線程不同步
LinkedList 線程不同步

性能選項

   通常情況下,不推薦使用Vector以及其子類Stack

1.需要線程同步

    使用Collections工具類中synchronizedXxx()將線程不同步的ArrayDeque以及LinkedList轉換成線程同步。

2.頻繁的插入、刪除操作:LinkedList

3.頻繁的隨機訪問操作:ArrayDeque

4.未知的初始數據量:LinkedList


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM