概述
前言
今天做剑指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方法,于是编写一段小程序测试一下它的功能,如下。
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在操作失败时返回特殊值。
测试代码如下
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中的Stack类和Queue接口前言所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复