我是靠谱客的博主 香蕉盼望,这篇文章主要介绍Java中的Stack类和Queue接口前言,现在分享给大家,希望可以做个参考。

前言

今天做剑指offer,里面有道题要求用两个栈实现一个队列,之前也零零散散遇到过一些需要用到栈和队列的数据结构的题目,于是抽空总结一下,不对之处望指出。


Stack类

Stack类继承自Vector类,有以下几个方法。
这里写图片描述
1. boolean empty()
判断栈是否为空
2. E peek()
返回栈顶对象,不移除
3. E pop()
返回栈顶对象,并移除
4. E push(E item)
压入栈顶
5. int search(Object o)
返回对象在栈的位置

search方法测试

因为平时没怎么用过search方法,于是编写一段小程序测试一下它的功能,如下。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.Stack; public class StackDemo { public static void main(String[] args) { Stack<Integer> stack = new Stack<>(); stack.push(1); stack.push(2); stack.push(3); stack.push(4); System.out.println("1在栈中的位置: " + stack.search(1)); System.out.println("2在栈中的位置: " + stack.search(2)); System.out.println("3在栈中的位置: " + stack.search(3)); System.out.println("4在栈中的位置: " + stack.search(4)); stack.pop(); stack.pop(); System.out.println("4在栈中的位置: " + stack.search(4)); System.out.println("3在栈中的位置: " + stack.search(3)); } }

输出结果如图
这里写图片描述
由输出知,search返回的位置是从栈顶开始计数,栈顶为1,而不在栈中的元素返回-1,所以我们可以通过返回值来判断栈中是否存在我们要搜索的元素。
最后,官方给出的API中推荐使用Deque接口来实现栈


Queue接口

Queue接口定义了如下6个方法,我们常用的LinkedList类就实现了Queue接口。
这里写图片描述
1. boolean add(E e)
向队列中添加元素
2. E element()
返回队列的头,且不移除
3. boolean offer(E e)
向队列中添加元素
4. E peek()
返回队列的头,且不移除
5. E poll()
返回队列的头,且移除
6. E remove()
返回队列的头,且移除
add、element、remove会在操作失败时抛出异常,而offer、peek、poll在操作失败时返回特殊值。
测试代码如下

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.LinkedList; import java.util.Queue; public class QueueDemo { public static void main(String[] args) { Queue<Integer> queue = new LinkedList<>(); System.out.println("目前是空队列,返回的队列头是:" + queue.poll()); // queue.remove(); System.out.println("--------------"); queue.offer(1); queue.offer(2); queue.offer(3); System.out.println("使用peek方法,返回的结果是:" + queue.peek()); System.out.println("使用poll方法,返回的结果是:" + queue.poll()); System.out.println("使用poll方法后,再使用peek方法看队列头,返回的结果是:" + queue.peek()); } }

结果如图
这里写图片描述


参考

http://www.runoob.com/java/java-stack-class.html

最后

以上就是香蕉盼望最近收集整理的关于Java中的Stack类和Queue接口前言的全部内容,更多相关Java中内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部