Stack 是先进后出的栈结构,其并不直接实现具体的逻辑,而是通过继承 Vector 类,调用 Vector 类的方法实现。

public
class Stack<E> extends Vector<E>

核心方法

Stack 类代码非常简单,其有 3 个核心方法:push、pop、peek。

push

public E push(E item) {
addElement(item); return item;
}

可以看到 push 方法直接调用 Vector 的 addElement 方法将元素插入数组尾部。

pop

public synchronized E pop() {
E obj;
int len = size(); obj = peek();
removeElementAt(len - 1); return obj;
}

pop 方法调用 Vector 的 removeElementAt 方法,删除了一个元素。要注意的是,其删除的是数组最后一个元素,而不是第一个元素。

peek

public synchronized E peek() {
int len = size(); if (len == 0)
throw new EmptyStackException();
return elementAt(len - 1);
}

peek 方法直接返回列表最后一个元素。

总结

Stack 方法代码真的是非常简单,其利用 Vector 实现了一个线程安全的栈结构。总的来说,其有以下特点:

  • 底层采用 Vector 实现,因此其也是采用数组实现,也是线程安全的。
  • 先进后出的栈结构

最新文章

  1. ARP协议工作流程
  2. 在 Mac OS X 终端里使用 Solarized 配色方案
  3. sdut 2413:n a^o7 !(第三届山东省省赛原题,水题,字符串处理)
  4. CrazePony飞行器--通信部分介绍【转】
  5. openstack domain serverID connect uri
  6. 从C#到Python —— 4 类及面向对象
  7. Python Trick
  8. 201521123015 《Java程序设计》第2周学习总结
  9. 实例说明MVC,MVP,MVVM架构
  10. css3中的动画 @keyframes animation
  11. ●线段树题之wows
  12. Python数据结构应用3——链表
  13. CF1142C U2
  14. python 类的属性__slots__ (了解一点点)
  15. pygame 笔记-2 模仿超级玛丽的弹跳
  16. pandas的时间戳
  17. Artem and Array CodeForces - 442C (贪心)
  18. TPshop隐藏index.php
  19. Java 的JAR包、EAR包、WAR包区别
  20. C++派生类构造函数调用顺序(详解)

热门文章

  1. JS基础知识点——原始类型和对象类型的区别
  2. NTFS在openwrt下的挂载问题
  3. Ubuntu16.04+GTX2070+Driver418.43+CUDA10.1+cuDNN7.6
  4. Fuchsia文章汇总
  5. Zabbix Server 3.2
  6. Java面试题_第一阶段(static、final、面向对象、多线程、集合、String、同步、接口、GC、JVM)
  7. ConcurrentHashMap源码走读
  8. 实战Netty集群
  9. 推荐一种非常好的新版DSP库源码移植方式,含V7,V6和V5的IAR以及MDK5的AC5和AC6版本
  10. 自己总结numpy用法