爲什麼sonarlint推薦使用Deque而不使用Stack

文章目錄:

1.棧的介紹

2. 棧的應用

3.不推薦使用原因:

4.ArrayDeque介紹


1.棧的介紹:


棧的最基本的特徵是LIFO(Last In First Out),因此棧又被稱爲後進先出的線性表。所以上面採用 LinkedList 實現的棧看起來也非常的簡單。雖然簡單,但我們並不需要重複的輪子。Java 提供了 Deuqe。Deque 是繼承自 Queue,而 Stack 是繼承自 Vector。Java 中的 Deuqe,即“double ended queue”的縮寫,是 Java 中的雙端隊列集合類型。Deque 具備普通隊列 FIFO 的功能,同時它也具備了 Stack 的 LIFO 功能,並且保留了 push 和 pop 函數,所以使用起來應該是一點障礙都沒有。


2. 棧的應用:


1)括號匹配
2)java中程序計數棧和堆棧
3)瀏覽器已訪問歷史記錄
4)計算後綴表達式


3.不推薦使用原因:

1)Stack 是 JDK 1.0 中就有的,且它繼承自 Vector,Vector 不被推薦使用了
2)vector中加入了synchronized關鍵字
3)Vector 是由數組實現的集合類,他包含了大量集合處理的方法,stack在基於數組實現上效率低


4.ArrayDeque介紹:


ArrayDeque 是 Deque 接口的一種具體實現,是依賴於可變數組來實現的。ArrayDeque 沒有容量限制,可根據需求自動進行擴容。ArrayDeque 可以作爲棧來使用,效率要高於 Stack。ArrayDeque 也可以作爲隊列來使用,效率相較於基於雙向鏈表的 LinkedList 也要更好一些。注意,ArrayDeque 不支持爲  null 的元素。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章