Stack 类表示后进先出(LIFO)的对象堆栈。它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。它提供了通常的 push 和 pop 操作,以及取堆栈顶点的 peek 方法、测试堆栈是否为空的 empty 方法、在堆栈中查找项并确定到堆栈顶距离的 search 方法。
继承关系如下:
图片说明
常用方法: boolean empty() 测试堆栈是否为空。
E peek() 查看堆栈顶部的对象,但不从堆栈中移除它。
E pop() 移除堆栈顶部的对象,并作为此函数的值返回该对象。
E push(E item) 把项压入堆栈顶部。
int search(Object o) 返回对象在堆栈中的位置,以 1 为基数。
下面我们来谈论一下如何用两个栈实现一个队列:
首先,栈是先进后出,而队列是先进先出,所以我们可以用两个栈,在插入时,我们可以将数据压入stack1,比如压入1,2,3那么1在底,但是我们可以将stack1压入stack2,那么stack2的顺序就是3,2,1就相当于先进先出,也就是队列的特性,具体实现如下:

 public static void main(String[] args) {
        Stack<Integer> st1=new Stack<>();
        Stack<Integer> st2=new Stack<>();
        st1.push(3);
        st1.push(2);
        st1.push(1);
     st1=insert(st1,0);
     st2=detele(st1,st2);
     while(!st2.empty()){
         System.out.println(st2.pop());
     }
    }
//插入元素,先将其插入stack1中
    public static Stack<Integer> insert(Stack<Integer> st1,int num){
        st1.push(num);
        return  st1;
    }
//删除元素时,先将stack1变为stack2,然后再删除stack2的顶,也就是最先进去的元素
    public static Stack<Integer> detele(Stack<Integer> st1,Stack<Integer> st2){
       if(st2.empty())
       {
           while(!st1.empty())
           {
               st2.push(st1.pop());
           }
       }

            st2.pop();

    return st2;
    }