您现在的位置是:首页 > 文章详情

java源码-Stack

日期:2018-08-02点击:517

开篇

Stack是List的实现类当中最简单的,用一句话形容Stack那就是Stack在Vector的基础上采用Vector的特性来达到Stack的目标。

Stack是一种后进先出的数据结构类型(数组)(last in frist out);实现了Vector;在Vector的基础添加了五个方法:

  • push(E item) 把项压入堆栈顶部。
  • pop() 移除堆栈顶部的对象,并作为此函数的值返回该对象。
  • peek() 查看堆栈顶部的对象,但不从堆栈中移除它。
  • boolean empty() 测试堆栈是否为空。
  • int search(Object o)#返回对象在堆栈中的位置,以 1 为基数。


Stack类图

img_3a49485c4cb7677debdde69e1df372b8.png
Stack类图


Stack源码分析

Stack的源码非常简单,就是在Vector提供的接口基础上作了一层封装。

  • push操作直接调用Vector的addElement()方法在尾部添加元素
  • pop操作直接调用Vector的removeElementAt()方法移除尾部的元素
  • Stack的操作全部是线程安全,使用synchronized变量进行修饰
public class Stack<E> extends Vector<E> { public Stack() { } public E push(E item) { addElement(item); return item; } public synchronized E pop() { E obj; int len = size(); obj = peek(); 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; } } 
原文链接:https://yq.aliyun.com/articles/666339
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章