Stack 堆疊
特性
- 先進後出(LIFO, Last In First Out)
- 意思是:最後放進去的東西,會最先被拿出來。
- 可以想像成:疊盤子,你最後放上去的盤子最先拿下來。
操作
push(item):放入堆疊pop():取出並移除堆疊頂端的元素peek():查看堆疊頂端元素,但不移除
Java 實作
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
// 放入元素
stack.push("蘋果");
stack.push("香蕉");
stack.push("橘子");
System.out.println("目前堆疊: " + stack); // [蘋果, 香蕉, 橘子]
// 查看頂端元素
System.out.println("堆疊頂端: " + stack.peek()); // 橘子
// 取出元素
String removed = stack.pop();
System.out.println("拿出的元素: " + removed); // 橘子
System.out.println("剩下的堆疊: " + stack); // [蘋果, 香蕉]
}
}
Queue 佇列
特性
- 先進先出(FIFO, First In First Out)
- 意思是:最早放進去的東西,會最先被拿出來。
- 可以想像成:排隊買票,排最前面的人最先被服務。
操作
offer(item):放入佇列poll():取出並移除佇列最前端元素peek():查看最前端元素,但不移除
Java 操作
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// 放入元素
queue.offer("蘋果");
queue.offer("香蕉");
queue.offer("橘子");
System.out.println("目前佇列: " + queue); // [蘋果, 香蕉, 橘子]
// 查看最前端元素
System.out.println("佇列最前面: " + queue.peek()); // 蘋果
// 取出元素
String removed = queue.poll();
System.out.println("拿出的元素: " + removed); // 蘋果
System.out.println("剩下的佇列: " + queue); // [香蕉, 橘子]
}
}
總結
Stack 想像是一個箱子, Queue 想像為排隊。
