Java雙向隊列Deque棧與隊列


Java中實際上提供了java.util.Stack來實現棧結構,但官方目前已不推薦使用,而是使用java.util.Deque雙端隊列來實現隊列與棧的各種需求.如下圖所示java.util.Deque的實現子類有java.util.LinkedList和java.util.ArrayDeque.顧名思義前者是基於鏈表,后者基於數據實現的雙端隊列.

要講棧和隊列,首先要講Deque接口。Deque的含義是“double ended queue”,即雙端隊列,它既可以當作棧使用,也可以當作隊列使用。下表列出了Deque與Queue相對應的接口:

下表列出了Deque與Stack對應的接口:

(轉載自)[https://blog.csdn.net/u013967628/article/details/85210036]

ArrayDeque與LinkedList

ArrayDeque與LinkedList都實現了Deque接口,其都是線程不安全的,當我們需要線程同步時,可以使用Collections工具類中synchronizedXxx()將線程不同步的ArrayDeque以及LinkedList轉換成線程同步。

區別:

1.底層數據結構不同,ArrayDeque是基於數組,LinkedList是基於鏈表,ArrayDeque默認長度為16,當容量不夠需要擴容(兩倍),其擴容很費時間(需要復制原數組到新數組)。所以未知數據量,盡量使用LinkedList

2.ArrayDeque適合頻繁訪問,LinkedList適合頻繁刪除


免責聲明!

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



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