Java中的队列

Java中的队列是一种基于FIFO(先入先出)原则的数据结构,如LinkedList和ArrayDeque实现了Queue和Deque接口。Queue主要提供size、add/offer、remove/poll、element/peek等方法,而Deque则允许在两端进行插入、删除和访问元素,扩展了Queue的功能。

1、队列的定义

队列:顾名思义,就像一个排队的列一样,排队要遵循的规则就是先来后到,所以队列就是一个先入先出(FIFO)的数据结构。这是一种特殊的线性表,遵循先入先出、后入后出的基本原则,一般来说,它只允许在表的前端进行删除操作,而在表的后端进行插入操作,但是Java的某些队列可以在任何地方插入删除,比如常用的 LinkedList 集合。

2、队列接口的继承图

队列主要分为阻塞和非阻塞,有界和无界、单向链表和双向链表之分;
队列接口的继承关系

在这里插入图片描述
图二参考

3、Queue

Queue<Integer> queue = new LinkedList<>(); // LinkedList实现了Queue接口
方法描述
int size()获取队列长度
boolean add(E)/boolean offer(E)添加元素到队尾
E remove()/E poll()获取队首元素并从队列中删除
E element()/E peek()获取队首元素但并不从队列中删除

remove()poll() 的区别:如果队列为空,remove会报异常NoSuchElementException,poll返回null。

element()peek() 的区别:如果队列为空,element会报异常NoSuchElementException,peek返回null。

4、Deque

// Deque 实现
// 可以从两端进行插入、取出、删除数据
Deque<Integer> queue = new ArrayDeque<>();
/ Deque 接口继承了 Queue 接口
// 所以 Queue 中的 add、poll、peek等效于 Deque 中的 addLast、pollFirst、peekFirst

DequeQueue的子类,可以把它当作队列来使用。Deque可以在两边都操作元素:新增、删除、访问元素等,而Queue 只能在队首 对元素进行操作。
Deque的方法

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值