浅谈Java:Stack浅析

Stack特性

​ 1、满足元素"后经先出"(LIFO)的特性。

​ 2、Stack类是线程安全的

​ 3、Stack类在Vector类上实现了LIFO特性

java.util.Stack方法

jdk1.8源码

public class Stack<E> extends Vector<E> {    public Stack(){}    // 调用父类的addElement()实现    public E push(E item){        addElement(item);        return item;    }    // 返回最后一个元素即栈顶元素,并删除    public synchronized E pop() {        E obj;        int len = size();        // 获取最后一个元素,如果为空则抛出EmptyStackException        obj = peek();        // 调用父类的removeElementAt()方法删除最后一个元素        removeElementAt(len - 1);        return obj;    }    // 返回最后一个元素即栈顶元素    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;    }}

Stack类的实现方法是比较简单的,仅在Voctor类的基础上提供了对于LIFO特性的实现细节。

自定义一个Stack类

LinkedList具有能够直接实现栈的所有功能的方法,下面我们采用LinkedList实现一个自定义栈

public class Stack<T> {    private LinkedList<T> storage = new LinkedList<T>();    public synchronized void push(T v) {        stroage.addFirsh(v);    }    public synchronized T pop() {        return stroage.removeFirst();    }    public synchronized T peek() {        return storage.getFirst();    }    public boolean empty(){        return storage.isEmpty();    }    public String toString() {        return storage.toString();    }}
©著作权归作者所有:来自51CTO博客作者有间猫呀的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 【CSS入门】学习CSS盒模型及常用样式属性详解(整理)
  2. css元素选择器
  3. HTML选择器和JS基础
  4. 小尺度衰弱信号信道特性的分析与仿真
  5. 选择器的优先级,id,class,tag。前端组件样式模块化的原理与实现
  6. 选择器优先级/前端组件样式模块化原理与实现/常用伪类选择器的使
  7. 0322作业-css基本语法、选择器及模块化开发
  8. css基础、选择器、模块化组件
  9. css第一课

随机推荐

  1. 在Symfony2中使用Doctrine DQL时检索的记
  2. 阅读使用JavaScript生成的页面
  3. 入门: 如何在xampp中运行php文件 (WINDOW
  4. 只有变量可以通过引用- array_walk传递。
  5. PHP mysqli_fetch_assoc不返回正确的值。
  6. PHP教程之PHP调用session_start后页面始
  7. 海词网招聘php程序员一名(上海)
  8. (phpQuery)对网站产品信息采集代码的优化
  9. PHP文件操作 - 替换某行,插入某行,删除某行
  10. PHP7 学习笔记(四)PHP PSR