代码拉取完成,页面将自动刷新
同步操作将从 turnon/blog 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
title: Java 容器之 Queue
date: 2020-02-21 16:26:21
categories:
- Java
- JavaSE
- 容器
tags:
- Java
- JavaSE
- 容器
permalink: /pages/ffa963/
Queue
接口定义如下:
public interface Queue<E> extends Collection<E> {}
AbstractQueue
类提供 Queue
接口的核心实现,以最大限度地减少实现 Queue
接口所需的工作。
AbstractQueue
抽象类定义如下:
public abstract class AbstractQueue<E>
extends AbstractCollection<E>
implements Queue<E> {}
Deque 接口是 double ended queue 的缩写,即双端队列。Deque 继承 Queue 接口,并扩展支持在队列的两端插入和删除元素。
所以提供了特定的方法,如:
大多数的实现对元素的数量没有限制,但这个接口既支持有容量限制的 deque,也支持没有固定大小限制的。
ArrayDeque
是 Deque
的顺序表实现。
ArrayDeque
用一个动态数组实现了栈和队列所需的所有操作。
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
类定义如下:
public class PriorityQueue<E> extends AbstractQueue<E>
implements java.io.Serializable {}
PriorityQueue
要点:
PriorityQueue
实现了 Serializable
,支持序列化。PriorityQueue
类是无界优先级队列。PriorityQueue
中的元素根据自然顺序或 Comparator
提供的顺序排序。PriorityQueue
不接受 null 值元素。PriorityQueue
不是线程安全的。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。