Java 中的 堆栈(Stack)
在刷算法题中,常用的除了队列(Java 中的 队列(Queue)与双端队列(Deque)-CSDN博客),还有堆栈,这次来学习一下堆栈(Stack)。
堆栈 (Stack)的一个特性即是后进先出 (LIFO),它继承了类 Vector,提供了常用的 push 和 pop 操作,以及一个用于查看堆栈上顶部项的方法、一个用于测试堆栈是否为空的方法,以及一个用于在堆栈中搜索项并发现它与顶部相距多远的方法。
方法如下
// [1, 2, 3, 2]
Stack<Integer> stack = new Stack<>(){{push(1);push(2);push(3);push(2);}};
方法 | 描述 | 示例 |
E push(E item) | 将item加入栈,并返回item | stack.push(4) //当前栈为 [1, 2, 3, 2, 4] |
synchronized E pop() | 删除此堆栈顶部的对象,并将该对象作为此函数的值返回。 如果此堆栈为空,则抛出异常-EmptyStackException | stack.pop() //当前栈为 [1, 2, 3, 2] |
synchronized E peek() | 查看此堆栈顶部的对象。 如果此堆栈为空,则抛出异常-EmptyStackException | stack.peek() // 返回值为 2 //当前栈为 [1, 2, 3, 2] |
boolean empty() | 判断此堆栈是否为空,是为true,否为false。 | stack.empty() // 返回值为 false |
synchronized int search(Object o) | 查询对象 o 所在位置,该位置为返回距最靠近堆栈顶部的匹配项的堆栈顶部的距离;堆栈上最上面的项被视为距离 1。 如果不存在则返回-1 | // 当前栈为 [1, 2, 3, 2] stack.search(2)// 返回值为1 stack.search(3)// 返回值为2 stack.search(1)// 返回值为4 |