一.栈(Stack):数据结构的一种,存储特点:Last In First Out.
Stack 类表示后进先出(LIFO)的对象栈.
栈结构在生活中的体现:
1):QQ消息. A,B,C三个人先后发送消息,我们查看的时候发现最顶上的是最新的消息.
2):手枪弹夹的装和发射:
要来实现栈的存储,底层可以数组来存储,也可以使用链表来存储.
二.操作模型图
三.源代码:
四.常用方法
因为操作的都是栈顶的元素,所以peek()方法和pop()方法是没有参数的
Stack stack = new Stack();
stack.push("A");
stack.push("B");
stack.push("C");
System.out.println(stack);//[A, B, C]
System.out.println(stack.peek());//C
stack.pop();
System.out.println(stack);//[A, B]
System.out.println(stack.peek());//B
五.Deque
双端队列也可用作 LIFO(后进先出)栈。应优先使用此接口而不是遗留 Stack 类。在将双端队列用作栈时,元素被推入双端队列的开头并从双端队列开头弹出。栈方法完全等效于 Deque 方法
官方建议:使用栈尽量使用ArrayDeque:
Deque 接口及其实现提供了 LIFO 堆栈操作的更完整和更一致的 set,应该优先使用此 set,而非此类。例如:
Deque stack = new ArrayDeque();
将第一个元素作为顶来操作
ArrayDeque arrayDeque = new ArrayDeque();
arrayDeque.push("A");
arrayDeque.push("B");
arrayDeque.push("C");
System.out.println(arrayDeque);//[C, B, A]
System.out.println(arrayDeque.peek());//C
arrayDeque.pop();
System.out.println(arrayDeque);//[B, A]
System.out.println(arrayDeque.peek());//B