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 ...
随机推荐
- python-matplotlib-2
figure的使用 x = np.linspace(-1, 1, 50) y1 = 2 * x + 1 #figure 1 plt.figure() plt.plot(x, y1) # figure ...
- 使用Jmeter对观影券查询接口做性能测试
线程数:虚拟用户数.一个虚拟用户占用一个进程或线程.设置多少虚拟用户数在这里也就是设置多少个线程数. 准备时长: 设置的虚拟用户数需要多长时间全部启动.如果线程数为20 ,准备时长为10 ,那么需要1 ...
- leetcode题目5.最长回文子串(中等)
题目描述: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad"输出: "bab"注意: ...
- legend3---6、legend3爬坑杂记
legend3---6.legend3爬坑杂记 一.总结 一句话总结: 学东西不做项目也学不到深处,其实也就是学了没理解透, 1.lavarel中模型关联可以用的实质是? lavarel在数据库中插入 ...
- vue——父组件调用子组件
<template> <div> child1 </div> </template> <script> export default { n ...
- WOE1-Feature Selection 相关:一个计算WOE和Information Value的python工具
python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...
- javascript之常用事件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [idea]添加jar包的方法
一:在项目的根目录下建立lib文件夹,然后将对应的jar包文件拷贝进去. 二:点击项目右键,选择Open Module Settings 三.选择Project Settings->Librar ...
- [NodeJS] 优缺点及适用场景
概述: NodeJS宣称其目标是“旨在提供一种简单的构建可伸缩网络程序的方法”,那么它的出现是为了解决什么问题呢,它有什么优缺点以及它适用于什么场景呢? 本文就个人使用经验对这些问题进行探讨. 一. ...
- shell脚本安装python、pip--这种写法是错误的---每一个命令执行完都要判断是否执行成功,否则无法进行下一步
shell脚本安装python.pip--不需要选择安装项目--不管用总报错,必须带上判断符号,while没有这种用法,写在这里为了以后少走弯路,所以不要用下面的执行了 首先把pip-.tgz 安装包 ...