Collection接口的子接口——Queue接口
https://docs.oracle.com/javase/8/docs/api/java/util/Queue.html
public interface Queue<E> extends Collection<E>
E是Queue中元素的类型。
父接口:Collection<E>, Iterable<E>
子接口:BlockingDeque<E>, BlockingQueue<E>, Deque<E>, TransferQueue<E>
常见实现类: ArrayDeque、 LinkedList
一、介绍
Queue(队列)是一个专为进行处理前保存元素而设计的集合。
除了Collection接口中基本操作外,Queue还提供了其它的插入、获取和检查操作。每种操作有两种形式的方法:一种是当操作失败时抛出异常;另一种是失败时返回特殊的值(null or false)。
后一种形式的插入操作,是专门为有容量限制的Queue实现设计的,在大多数的实现类中,插入操作不会失败。
| throws exception | return value | |
| Insert | add(e) | offer(e) |
| Remove | remove() | poll() |
| Examine | element() | peek() |
队列通常但不一定以FIFO(先进先出)方式排列元素。
例如,优先队列,根据它提供的比较器进行排序,或者根据元素的自然排序。还有栈(LIFO Queue),它的排序规则是LIFO。
不论是采用哪种排序,Queue的头部都是那个通过remove()或poll()来移除的元素。
在FIFO queue中,新的元素都插入队列的尾部。不同的实现类有不同的规则。
Queue通常不允许插入null元素,然而一些实现类比如LinkedList,并不禁止null值的插入。但是我们仍然需要避免插入null元素,因为当Queue为空时,poll()会返回null。
Queue的实现类一般不会重写equals()和hashcode(),而是直接继承Object类中的版本。
Queue接口是Java Collections Framework的成员。
二、方法
1、boolean add(E e)
若没有超出容量限制,插入指定元素。
操作成功返回true;
如果当前没有空间可用,抛出一个IllegalStateException
2、boolean offer(E e)
若没有超出容量限制,插入指定元素。
操作成功返回true;失败返回false。
在有容量限制的队列中,这个方法比add()更好。
3、E remove()
检索并删除队列的头部元素,还将它返回。
队列为空时抛出异常。
4、E poll()
检索并删除队列的头部元素,并将它返回。
队列为空时返回null。
5、E element()
检索并返回头部元素。
队列为空时,抛出出异常
6、E peek()
检索并返回头部元素。
队列为空时,返回null。
Collection接口的子接口——Queue接口的更多相关文章
- Java中的集合(三)继承Collection的Queue接口
Java中的集合(三)继承Collection的Queue接口 一.Queue介绍 Queue接口继承自Collection接口,是Java中定义的一种队列数据结构,元素是有序的(按插入顺序排序),先 ...
- 16、Collection接口及其子接口Set和List(常用类LinkedList,ArrayList,Vector和Stack)
16.Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同 ...
- Collection接口的子接口——Deque接口
https://docs.oracle.com/javase/8/docs/api/java/util/Deque.html public interface Deque<E> exten ...
- LinkedList子类与Queue接口
LinkedList表示的是一个链表的操作类.定义如下: public class LinkedList<E> extends AbstractSequentialList<E> ...
- 集合框架之Queue接口
Queue接口 在处理元素前用于保存元素的 collection.除了基本的 Collection 操作外,队列还提供其他的插入.提取和检查操作.每个方法都存在两种形式:一种抛出异常(操作失败时),另 ...
- Java中的队列:java.util.Queue接口
队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作. Queue接口与List.Set同一级别,都是继承了Collection接口.Linked ...
- java中Queue接口
Queue接口与List.Set同一级别,都是继承了Collection接口.LinkedList实现了Queue接 口.Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类 ...
- Java集合类——Set、List、Map、Queue接口
目录 Java 集合类的基本概念 Java 集合类的层次关系 Java 集合类的应用场景 一. Java集合类的基本概念 在编程中,常需要集中存放多个数据,数组是一个很好的选择,但数组的长度需提前指定 ...
- Queue接口的实现类竟然有一个是LinkedList,一个是优先队列(同一个接口,只改了不同的实现类,附源码)
输出是: Queue接口底层换一个实现类,照样的是调用Queue接口中的方法 import java.util.HashMap; import java.util.LinkedList; import ...
随机推荐
- BZOJ1706奶牛接力跑
这个东西思路还是不错的. 解法就是把矩阵幂的加法改成取min,乘法改成加法就好,和floyed是一样的.这样的话,矩阵操作一次就相当于松弛了一次最短路. 建矩阵的过程也比较简单,可以离散化,当然下面有 ...
- 0.JQuery学习
jQuery 教程 jQuery 是一个 JavaScript 库. jQuery 极大地简化了 JavaScript 编程. jQuery 简介 jQuery 库可以通过一行简单的标记被添加到网页中 ...
- 2018-2019-2 20165205 网络对抗技术 Exp9 Web安全基础
2018-2019-2 20165205 网络对抗技术 Exp9 Web安全基础 1.基础问题 SQL注入攻击原理,如何防御 原理: SQL注入指攻击者在提交查询请求时将SQL语句插入到请求内容中,同 ...
- T89379 【qbxt】复读警告
T89379 [qbxt]复读警告 题解 这是一道DP题 设置状态 f[ i ][ j ] 前 i 个数中所选数字之和 % key 得 j 的最大方案数 当前我们该选择第 i 个数字了,那么这个数 ...
- nodejs本版问题
接到一个新项目,前端用的是VUE,这就需要安装nodejs.记得之前安装的是V6.X,在npm install加载依赖库node_modules的时候ant-design-vue总是报错.看到同事用n ...
- 使用Statement执行DML和DQL语句
import com.loaderman.util.JdbcUtil; import java.sql.Connection; import java.sql.DriverManager; impor ...
- JAVA向C传递数据
传递数组 数组是个对象,传递对象就是传递地址,修改地址上的值,数组的内容就会改变 //获取数组首地址 int* p = (*env)->GetIntArrayElements(env, arra ...
- c#阿里云短信验证码
发送验证码 private static void SendAcs(string mobile, string templateCode, dynamic json, int ourid) { if ...
- pandas之数据选择
pandas中有三种索引方法:.loc,.iloc和[],注意:.ix的用法在0.20.0中已经不建议使用了 import pandas as pd import numpy as np In [5] ...
- oracle imp 工具可能出现的问题