java中的Stack、Queue、Deque用法


1.Stack(LIFO,頭部添加、頭部刪除、后進先出)

1.1 Stack原理

棧是Vector的一個子類,它實現了一個標准的后進先出的棧。
image
Vector 是 AbstractList 子類
Vector 實現了 List 接口
ArrayList 是 AbstractList 子類
ArrayList 和 Vector 關系總算清楚了,他們是哥們關系,並且都繼承自 AbstractList
從上面所有的分析,我們知道了Stack 本質也是一個 List。其具備 List 所有方法

1.2 Stack的使用

堆棧只定義了默認構造函數,用來創建一個空棧。
堆棧除了包括由Vector定義的所有方法,也定義了自己的一些方法。
初始化:Stack stack=new Stack();
image

2.Queue(FIFO,尾部添加、頭部刪除、先進先出)

2.1 Queue原理

Java集合中的Queue繼承自Collection接口,Deque,LinkedList,PriorityQueue,BlockingQueue等類都實現了它。
Queue 用來存放等待處理元素的集合,這種場景一般用於緩沖、並發訪問。

2.1 Queue使用

除了繼承 Collection 接口的一些方法,Queue 還添加了額外的添加、刪除、查詢操作。
image
add:增加一個元索,如果隊列已滿,則拋出一個IIIegaISlabEepeplian異常
offer:添加一個元素並返回true,如果隊列已滿,則返回false

remove:移除並返回隊列頭部的元素,如果隊列為空,則拋出一個NoSuchElementException異常
poll:移除並返問隊列頭部的元素,如果隊列為空,則返回null

element:返回隊列頭部的元素,如果隊列為空,則拋出一個NoSuchElementException異常
peek:返回隊列頭部的元素,如果隊列為空,則返回null

isEmpty:判斷隊列是否為空

3.Deque(雙端隊列,頭部尾部添加、頭部尾部刪除,Java官方推薦使用Deque替代Stack)

3.1 Deque原理

Deque是一個雙端隊列接口,繼承自Queue接口,Deque的實現類是LinkedList、ArrayDeque、LinkedBlockingDeque,其中LinkedList是最常用的。
大多數 Deque 實現對於它們能夠包含的元素數沒有固定限制,但此接口既支持有容量限制的雙端隊列,也支持沒有固定大小限制的雙端隊列。

3.2 Deque使用

此接口定義在雙端隊列兩端訪問元素的方法。提供插入、移除和檢查元素的方法。每種方法都存在兩種形式:一種形式在操作失敗時拋出異常,另一種形式返回一個特殊值(null 或 false,具體取決於操作)。插入操作的后一種形式是專為使用有容量限制的 Deque 實現設計的;在大多數實現中,插入操作不能失敗。
image
image
image


免責聲明!

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



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