专栏首页Java开发者之家ArrayDeque以及PriorityQueue的使用

ArrayDeque以及PriorityQueue的使用

# ArrayDeque的两种使用方式

Deque接口是Queue接口的子接口,它代表一个双端队列,该队列允许从两端来操作队列中的元素。Deque不仅可以当成双端队列使用,而且可以当成栈来使用。

ArrayDeque集合是Deque接口的实现类,它是一个基于数组的双端队列,创建Deque时同样可以指定一个numElements参数,该参数用于指定Object[]数组的长度;如果不指定该参数,Deque底层数组长度为16。

# 作为栈使用

  • 验证作为栈使用
	public void testStack() {
        ArrayDeque<String> stack = new ArrayDeque<String>();
        stack.push("The Times");
        stack.push("Economics");
        stack.push("the New York Times");
        //读取第一个元素,但不是出栈
        System.out.println(stack.peek());

        System.out.println(stack);

        //直接取第一个元素出栈
        System.out.println(stack.pop());

        System.out.println(stack);
    }
  • 验证结果
the New York Times
[the New York Times, Economics, The Times]
the New York Times
[Economics, The Times]

# 作为队列使用

  • 验证作为队列使用
	public void testQueue() {
        ArrayDeque<String> queue = new ArrayDeque<String>();
        queue.offer("The Times");
        queue.offer("Economics");
        queue.offer("the New York Times");

        //读队列第一个元素,但是不出队列
        System.out.println(queue.peek());

        System.out.println(queue);

        //读并且取出第一个元素
        System.out.println(queue.poll());

        System.out.println(queue);
    }
  • 验证结果
The Times
[The Times, Economics, the New York Times]
The Times
[Economics, the New York Times]

# PriorityQueue的使用

PriorityQueue是优先级队列,优先级可由new Comparator定义。

  • 验证
	public void testPriorityQueue() {
        PriorityQueue<String> priorityQueue = new PriorityQueue<>(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.length() - o2.length();
            }
        });
        priorityQueue.offer("student's book");
        priorityQueue.offer("teachers");
        priorityQueue.offer("employees");
        priorityQueue.offer("manager");

        while(!priorityQueue.isEmpty()) {
            System.out.println(priorityQueue.poll());
        }

    }
  • 验证结果
manager
teachers
employees
student's book

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java集合中的Queue & Deque

    Java 中的 这个 Queue 接口稍微有点坑,一般来说队列的语义都是先进先出(FIFO)的。

    Vincent-yuan
  • Java Review (二十八、集合----- Queue 集合)

    队列(Queue)是一种经常使用的集合。Queue实际上是实现了一个先进先出(FIFO:First In First Out)的有序表。它和List的区别在于,...

    三分恶
  • Queue 相关数据结构的原理与实现 (LinkedList, ArrayDeque, PriorityQueue)

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    剑影啸清寒
  • (48) 剖析ArrayDeque / 计算机程序的思维逻辑

    查看历史文章,请点击上方链接关注公众号。 前面我们介绍了队列Queue的两个实现类LinkedList和PriorityQueue,LinkedList还实现了...

    swiftma
  • Java 集合框架看这一篇就够了

    Java 集合,也称作容器,主要是由两大接口 (Interface) 派生出来的: Collection 和 Map

    JAVA葵花宝典
  • Java 基础(六)——集合源码解析 Queue

    Queue继承自 Collection,我们先来看看类结构吧,代码量比较少,我直接贴代码了。

    蜻蜓队长
  • Java8编程思想(十二)-容器持有对象(下)

    堆栈是“后进先出”(LIFO)集合。它有时被称为叠加栈(pushdown stack),因为最后“压入”(push)栈的元素,第一个被“弹出”(pop)栈。经常...

    JavaEdge
  • (55) 容器类总结 / 计算机程序的思维逻辑

    从38节到54节,我们介绍了多种容器类,本节进行简要总结,我们主要从三个角度进行总结: 用法和特点 数据结构和算法 设计思维和模式 用法和特点 我们在52节...

    swiftma
  • 集合系列(一):集合框架概述

    Java 集合是 Java API 用得最频繁的一类,掌握 Java 集合的原理以及继承结构非常有必要。总的来说,Java 容器可以划分为 4 个部分:

    陈树义
  • 深入理解Java PriorityQueue

    Java中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示。本文从Queue接口函数出发,结合生动的图解,深入浅出地分析PriorityQ...

    用户1289394
  • JAVA 持有对象——容器初探

    了解容器前,先提出一个问题,ArrayList和LinkedList谁的处理速度更快呢?

    zhangheng
  • Java集合类型详解

    这篇文章总结了所有的Java集合(Collection)。主要介绍各个集合的特性和用途,以及在不同的集合类型之间转换的方式。

    Java团长
  • 算法细节系列(24):开始堆吧!

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    用户1147447
  • Java集合总览

    这篇文章总结了所有的Java集合(Collection)。主要介绍各个集合的特性和用途,以及在不同的集合类型之间转换的方式。 Arrays Array是Java...

    非著名程序员
  • Java集合框架

    其主要实现类:ArrayList、LinkedList、Vector、Stack。

    想名字好难
  • 教妹学 Java 第 50 讲:初探集合框架

    眼瞅着三妹的王者荣耀杀得正嗨,我趁机喊到:“别打了,三妹,我们来一起学习 Java 的集合框架吧。”

    沉默王二
  • Java:那些关于集合的知识都在这里了!

    在本节中,会先介绍Collection接口,再介绍其具体集合实现类(List、Set、Queue类)

    Carson.Ho
  • JavaSE(八)之集合概述

    前几天其实一直在学习关于linux的内容和kvm虚拟化的知识。今天有时间来回顾一下集合相关的知识,接下来我将带大家一起来回顾一起集合关联的知识。 不要辜负自己花...

    用户1195962
  • (52) 抽象容器类 / 计算机程序的思维逻辑

    查看历史文章,请点击上方链接关注公众号。 从38节到51节,我们介绍的都是具体的容器类,上节我们提到,所有具体容器类其实都不是从头构建的,它们都继承了一些抽象容...

    swiftma

扫码关注云+社区

领取腾讯云代金券