集合系列 List(五):Stack
2024-09-01 02:02:27
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 实现,因此其也是采用数组实现,也是线程安全的。
- 先进后出的栈结构
最新文章
- ARP协议工作流程
- 在 Mac OS X 终端里使用 Solarized 配色方案
- sdut 2413:n a^o7 !(第三届山东省省赛原题,水题,字符串处理)
- CrazePony飞行器--通信部分介绍【转】
- openstack domain serverID connect uri
- 从C#到Python —— 4 类及面向对象
- Python Trick
- 201521123015 《Java程序设计》第2周学习总结
- 实例说明MVC,MVP,MVVM架构
- css3中的动画 @keyframes animation
- ●线段树题之wows
- Python数据结构应用3——链表
- CF1142C U2
- python 类的属性__slots__ (了解一点点)
- pygame 笔记-2 模仿超级玛丽的弹跳
- pandas的时间戳
- Artem and Array CodeForces - 442C (贪心)
- TPshop隐藏index.php
- Java 的JAR包、EAR包、WAR包区别
- C++派生类构造函数调用顺序(详解)
热门文章
- JS基础知识点——原始类型和对象类型的区别
- NTFS在openwrt下的挂载问题
- Ubuntu16.04+GTX2070+Driver418.43+CUDA10.1+cuDNN7.6
- Fuchsia文章汇总
- Zabbix Server 3.2
- Java面试题_第一阶段(static、final、面向对象、多线程、集合、String、同步、接口、GC、JVM)
- ConcurrentHashMap源码走读
- 实战Netty集群
- 推荐一种非常好的新版DSP库源码移植方式,含V7,V6和V5的IAR以及MDK5的AC5和AC6版本
- 自己总结numpy用法