本文主要是介绍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()
这篇关于Java中栈(Stack)用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!