java deque与queue_Java中的Queue与Deque

本文介绍了Java中的Deque接口及其继承的Queue接口,重点讨论了ArrayDeque和LinkedList这两个Deque接口的实现类。ArrayDeque使用循环数组实现,提供高效的两端操作,而LinkedList适合需要索引操作和中间插入删除的情况。此外,文章还提到了PriorityQueue,这是一个基于优先级的队列。最后,提到了并发场景下的Queue/Deque实现,如ConcurrentLinkedQueue和ConcurrentLinkedDeque。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Queue接口的实现类

Queue接口作为队列数据结构,java在实现的时候,直接定义了Deque接口(双端队列)来继承Queue接口,并且只实现Deque接口。这样java中的双端队列就囊括了队列、双端队列、堆栈(Deque接口又定义了Stack的操作方法)这3种角色的功能。

所以我们在使用的时候直接使用的是Deque接口的实现类,当然Deque接口继承自Queue接口。

156e1c26e2b6adf92ddfc39391eb43b8.png

Deque接口的实现类

我们记住,Deque接口所能代表的数据结构:队列,双端队列,堆栈。

ArrayDeque

2573125e77654824f4e50c0e8c5b5575.png

1.内部使用transient Object[] elements数组来实现。拥有head/tail这2个头尾指针。最小初始化容量8。它还是一个循环队列。

2c7b0a04b2f647f668e03b8a57b8b70b.png

2.在扩容/初始化的时候,数组的内部大小一定是2个幂次方,也就是说大小只可能是:8、16、32、64这样的倍增。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值