JAVACORE JAVACORE
基础特性
高级特性
容器
IO
并发
JVM
  • Java 教程 📚 (opens new window)
  • JavaCore 教程 📚 (opens new window)
  • Spring 教程 📚 (opens new window)
  • Spring Boot 教程 📚 (opens new window)
🎯 博客 (opens new window)
GitHub (opens new window)
基础特性
高级特性
容器
IO
并发
JVM
  • Java 教程 📚 (opens new window)
  • JavaCore 教程 📚 (opens new window)
  • Spring 教程 📚 (opens new window)
  • Spring Boot 教程 📚 (opens new window)
🎯 博客 (opens new window)
GitHub (opens new window)
  • JavaSE

    • 基础特性

    • 高级特性

    • 容器

      • Java 容器简介
      • Java 容器之 List
      • Java 容器之 Map
      • Java 容器之 Set
      • Java 容器之 Queue
        • Queue 简介
          • Queue 接口
          • AbstractQueue 抽象类
          • Deque 接口
        • ArrayDeque
        • LinkedList
        • PriorityQueue
        • 参考资料
      • Java 容器之 Stream
    • IO

    • 并发

    • JVM

    • Java 面试总结
  • Java
  • JavaSE
  • 容器
dunwu
2020-02-21
目录

Java 容器之 Queue

# 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 接口,并扩展支持在队列的两端插入和删除元素。

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

  • 尾部插入时需要的 addLast(e) (opens new window)、offerLast(e) (opens new window)。
  • 尾部删除所需要的 removeLast() (opens new window)、pollLast() (opens new window)。

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

# ArrayDeque

ArrayDeque 是 Deque 的顺序表实现。

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

# LinkedList

LinkedList 是 Deque 的链表实现。

示例:

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 不是线程安全的。

# 参考资料

  • 解读 Java 并发队列 BlockingQueue (opens new window)
📝 帮助改善此页面! (opens new window)
#Java#JavaSE#容器
上次更新: 2024/09/13, 06:43:21
Java 容器之 Set
Java 容器之 Stream

← Java 容器之 Set Java 容器之 Stream→

最近更新
01
JavaSE
05-06
02
源码级深度理解 Java SPI
04-26
03
Java 基础语法特性
01-25
更多文章>
Theme by Vdoing | Copyright © 2019-2024 钝悟(dunwu) | CC-BY-SA-4.0
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×