1 Star 0 Fork 57

ovoMing / blog

forked from turnon / blog 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
05.Java容器之Queue.md 3.25 KB
一键复制 编辑 原始数据 按行查看 历史
turnon 提交于 2023-02-10 11:40 . docs: 更新文档
title: Java 容器之 Queue
date: 2020-02-21 16:26:21
categories:
  - Java
  - JavaSE
  - 容器
tags:
  - Java
  - JavaSE
  - 容器
permalink: /pages/ffa963/

Java 容器之 Queue

Queue 简介

Queue 接口

Queue 接口定义如下:

public interface Queue<E> extends Collection<E> {}

AbstractQueue 抽象类

AbstractQueue 类提供 Queue 接口的核心实现,以最大限度地减少实现 Queue 接口所需的工作。

AbstractQueue 抽象类定义如下:

public abstract class AbstractQueue<E>
    extends AbstractCollection<E>
    implements Queue<E> {}

Deque 接口

Deque 接口是 double ended queue 的缩写,即双端队列。Deque 继承 Queue 接口,并扩展支持在队列的两端插入和删除元素

所以提供了特定的方法,如:

大多数的实现对元素的数量没有限制,但这个接口既支持有容量限制的 deque,也支持没有固定大小限制的。

ArrayDeque

ArrayDequeDeque 的顺序表实现。

ArrayDeque 用一个动态数组实现了栈和队列所需的所有操作。

LinkedList

LinkedListDeque 的链表实现。

示例:

public class LinkedListQueueDemo {

    public static void main(String[] args) {
        //add()和remove()方法在失败的时候会抛出异常(不推荐)
        Queue<String> queue = new LinkedList<>();

        queue.offer("a"); // 入队
        queue.offer("b"); // 入队
        queue.offer("c"); // 入队
        for (String q : queue) {
            System.out.println(q);
        }
        System.out.println("===");
        System.out.println("poll=" + queue.poll()); // 出队
        for (String q : queue) {
            System.out.println(q);
        }
        System.out.println("===");
        System.out.println("element=" + queue.element()); //返回第一个元素
        for (String q : queue) {
            System.out.println(q);
        }
        System.out.println("===");
        System.out.println("peek=" + queue.peek()); //返回第一个元素
        for (String q : queue) {
            System.out.println(q);
        }
    }

}

PriorityQueue

PriorityQueue 类定义如下:

public class PriorityQueue<E> extends AbstractQueue<E>
    implements java.io.Serializable {}

PriorityQueue 要点:

  • PriorityQueue 实现了 Serializable,支持序列化。
  • PriorityQueue 类是无界优先级队列。
  • PriorityQueue 中的元素根据自然顺序或 Comparator 提供的顺序排序。
  • PriorityQueue 不接受 null 值元素。
  • PriorityQueue 不是线程安全的。

参考资料

JavaScript
1
https://gitee.com/ovoMing/blog.git
git@gitee.com:ovoMing/blog.git
ovoMing
blog
blog
master

搜索帮助