隊列和棧是計算機科學中常見的數據結構。它們的基本原理很簡單:隊列(Queue)是一種先進先出(FIFO)的數據集合,就像排隊買票一樣,先來的人先買;棧(Stack)則是一種后進先出(LIFO)的數據集合,就像一疊盤子,先堆起來的后拿走。
// Java隊列的使用示例
Queue<String> queue = new LinkedList<>();
queue.offer("a");
queue.offer("b");
queue.offer("c");
System.out.println(queue.poll()); // 輸出 a
System.out.println(queue.poll()); // 輸出 b
System.out.println(queue.poll()); // 輸出 c
// Java棧的使用示例
Stack<String> stack = new Stack<>();
stack.push("a");
stack.push("b");
stack.push("c");
System.out.println(stack.pop()); // 輸出 c
System.out.println(stack.pop()); // 輸出 b
System.out.println(stack.pop()); // 輸出 a
Java提供了一組隊列和棧的接口,包括Queue、Deque(雙端隊列)和Stack。除了Stack接口以外,其他接口都是在Java 1.5中引入的。其中,Queue和Deque接口定義了許多操作隊列和雙端隊列的方法,如offer()、poll()、peek()等;Stack接口則定義了壓棧和出棧的方法push()和pop()。
在實際編程中,我們常常需要用到隊列和棧來解決問題。例如,在圖像處理中,我們需要對像素點進行遍歷,就可以使用隊列和棧來存儲待處理的像素點集合。在Web開發中,Spring框架的MVC模式也使用了隊列和棧來處理請求和響應。