Java中栈(Stack)用法
·
1.栈的定义
栈(Stack) 是一种 后进先出(LIFO:Last In First Out) 的数据结构。
队列(Queue) 是先进先出 (First In First Out, FIFO) 的数据结构,是最先进队列的元素一定最早出队列。
LIFO是最后进Stack的元素一定最早出Stack。如何做到这一点呢?只需要把队列的一端封死:
因此,Stack是这样一种数据结构:只能不断地往 Stack中压入(push) 元素,最后进去的必须最早弹出(pop) 来。
2. 栈的基本操作
Stack只有入栈和出栈的操作:
- 把元素压栈:push(E);
- 把栈顶的元素“弹出”:pop();
- 取栈顶元素但不弹出:peek()。
在Java中,我们用Deque可以实现Stack的功能:
- 把元素压栈:push(E)/addFirst(E); 把栈顶的元素“弹出”:pop()/removeFirst();
- 取栈顶元素但不弹出:peek()/peekFirst()。
为什么Java的集合类没有单独的Stack接口呢?因为有个遗留类名字就叫Stack,出于兼容性考虑,所以没办法创建Stack接口,只能用Deque接口来“模拟”一个Stack了。
想了解Java中的Stack类的可以看Java Stack类。
当我们把Deque作为Stack使用时,注意只调用push()/pop()/peek()方法,不要调用addFirst()/removeFirst()/peekFirst()方法,这样代码更加清晰。
3.Java中栈的应用
| 方法 | 修饰符和类型 | 方法描述 |
|---|---|---|
| empty() | boolean | 测试堆栈是否为空 |
| push(E item) | E | 把项压入堆栈顶部 |
| pop() | E | 移除堆栈顶部的对象,并作为此函数的值返回该对象 |
| peek() | E | 查看堆栈顶部的对象,但不从堆栈中移除它 |
| search(Object o) | int | 返回对象再堆栈中的位置,以1为基数 |
3.1 初始化
Stack stack=new Stack();
3.2 判断栈是否为空
isEmpty()
3.3 添加元素
push(E item)
3.4 获取栈顶值,元素不出栈(栈为空时抛异常)
peek();
3.5 是否存在obj
search(Object obj);
3.6 移除栈顶
pop();
3.7其他方法
//获取stack长度
size()
//下标处添加
add(int index, E element)
//添加集合
addAll(Collection<? extends E> c)
//移除对象
remove(Object obj)
//根据下标移除对象
remove(int index)
//清空
clear()
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)