Java中的栈和队列

先进后出(FILO)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Stack<Integer> stack = new Stack<>();

// push 操作
stack.push(1);
stack.push(2);
stack.push(3);

// peek 操作
System.out.println("栈顶元素: " + stack.peek()); // 输出 3

// pop 操作
System.out.println("弹出元素: " + stack.pop()); // 输出 3

// 当前栈顶元素
System.out.println("新的栈顶元素: " + stack.peek()); // 输出 2
  • push: 将元素压入栈顶。
  • pop: 移除并返回栈顶元素。
  • peek: 返回栈顶元素但不移除它。

队列

先进先出(FIFO)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Queue<Integer> queue = new LinkedList<>();

// offer 操作
queue.offer(1);
queue.offer(2);
queue.offer(3);

// peek 操作
System.out.println("队列头部元素: " + queue.peek()); // 输出 1

// poll 操作
System.out.println("移除的元素: " + queue.poll()); // 输出 1

// 当前队列头部元素
System.out.println("新的队列头部元素: " + queue.peek()); // 输出 2

// 队列是否为空
System.out.println("队列是否为空: " + queue.isEmpty()); // 输出 false

// 队列的大小
System.out.println("队列的大小: " + queue.size()); // 输出 2

  • offer: 将元素添加到队列尾部。
  • poll: 移除并返回队列头部的元素。
  • peek: 返回队列头部的元素但不移除它。

双端队列(Deque)

双端队列(Deque, Double Ended Queue)是允许在两端进行插入和删除操作的队列。Java中的ArrayDeque类是Deque接口的一个实现。

1
2
3
4
5
6
7
8
9
10
Deque<Integer> deque = new ArrayDeque<>();

// 在队列头部和尾部添加元素
deque.addFirst(1);
deque.addLast(2);

// 在队列头部和尾部移除元素
System.out.println("移除头部元素: " + deque.removeFirst()); // 输出 1
System.out.println("移除尾部元素: " + deque.removeLast()); // 输出 2