我是靠谱客的博主 香蕉盼望,最近开发中收集的这篇文章主要介绍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方法,于是编写一段小程序测试一下它的功能,如下。

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接口前言所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部