Java中的Stack和Queue是兩個常用的數據結構,它們都是基于數學中的棧和隊列概念而來。以下我們分別來介紹它們的特點和用法。
Stack
Stackstack = new Stack ();
Stack是一種后進先出(LIFO)的數據結構,直觀上類似于一個桶,可以往里面依次放入元素,取出時則會先取出最后加入的元素。在Java集合框架中,Stack類實現了一個標準的先進后出的棧。創建一個Stack對象也很簡單,如上代碼所示,我們首先聲明了一個存儲整數類型的Stack對象,并使用無參構造函數來創建它。
以下是Stack常用的幾個方法:
- push(E item):將指定的元素推入此堆棧的頂部。
- pop():從此堆棧中彈出頂部的元素。
- peek():查看此堆棧頂部的對象,但不從堆棧中刪除它。
- empty():測試堆棧是否為空。
Queue
Queuequeue = new LinkedList ();
Queue是一種先進先出(FIFO)的數據結構,直觀上就像排隊一樣,先來的人先被服務。在Java集合框架中,Queue是接口,它有很多實現類,我們這里以LinkedList實現的例子來介紹。Queue的創建和Stack類似,但是注意要使用LinkedList來實現。
以下是Queue常用的幾個方法:
- add(E e):將一個元素插入到隊列中,如果成功則返回true,否則會拋出異常。
- offer(E e):將一個元素插入到隊列中,如果隊列沒有滿則返回true,否則返回false。
- remove():檢索并移除此隊列中的頭部,如果隊列為空則拋出異常。
- poll():檢索并移除此隊列中的頭部,如果隊列為空則返回null。
- peek():檢索隊列頭部的元素但不將其移除,如果隊列為空則返回null。
當然,Stack和Queue還有其他的方法和用法,這里我們只介紹了它們最基本和常用的一些方法。