天天看点

java中Stack的源码解析

       栈是一种基于后进先出的数据结构。实现的栈的方式有数组和链表两种数据结构。下面我们来看看java中的Stack源码解析。

     //Stack栈继承了 Vector方法,Vector方法是内部是数组实现的,即java中Stack 也是通过数组实现的。下面我们看看Stack如何通过Vector中的方法实现先进后出,实现压栈和出站的

     public   class Stack<E> extends Vector<E> {

        public Stack() {     }   //对外的构造器实现

           public synchronized E peek() {

              int len = size();

              if (len == 0)

             throw new EmptyStackException();

             return elementAt(len - 1);

       }

     public boolean empty() {

          return size() == 0;

        }

          public synchronized int search(Object o) {

                  int i = lastIndexOf(o);//从数组末尾开始遍历,取距离栈顶最近的元素

                 if (i >= 0) {

                 return size() - i;

                 }

                 return -1;

             }

 java中Stack栈的实现,是通过Vector集合中的方法来实现相应的压栈(push)和出栈(pop),即通过将数组元素的末尾作为栈顶,压栈和出栈从数组尾部进行,从而实现栈的新进后出的功能。栈中的元素放在

Object[]数组中,感兴趣的同学可以自己通过数组来白板编程实现栈。这里重点是介绍java中栈的实现,估不在做解释。

转载于:https://www.cnblogs.com/caibixiang123/p/9257441.html