网站首页
手机版

java双端队列作用 双端队列如何用顺序方式存储

更新时间:2023-07-29 09:05:50作者:未知

java双端队列作用 双端队列如何用顺序方式存储

LinkedBlockingDeque概述

LinkedBlockingDeque是由链表构成的界限可选的双端阻塞队列,支持O(1)的时间复杂度从两端插入和移除元素,如不指定边界,则为Integer.MAX_VALUE。

由一个ReentrantLock保证同步,使用conditions来实现等待通知。

linkLast

在last节点后加入节点node,更新last。如果插入之后超出容量,返回false。

private boolean linkLast(Node node) { // assert lock.isHeldByCurrentThread(); if (count >= capacity) return false; Node l = last; node.prev = l; last = node; if (first == null) first = node; else l.next = node; ++count; notEmpty.signal();// 满足notEmpty条件 return true; }

unlinkFirst

移除first节点,并返回其item值,如果队列为空,则返回full。

private E unlinkFirst() { // assert lock.isHeldByCurrentThread(); Node f = first; if (f == null) return null; Node n = f.next; E item = f.item; f.item = null; f.next = f; // help GC first = n; if (n == null) last = null; else n.prev = null; --count; notFull.signal();// 满足notFull条件 return item; }

unlink

移除任意一个节点,注意这里并没有操作x本身的连接,因为它可能仍被iterator使用着。

void unlink(Node x) { // assert lock.isHeldByCurrentThread(); Node p = x.prev; Node n = x.next; // 移除的是first if (p == null) { unlinkFirst(); // 移除的是last } else if (n == null) { unlinkLast(); } else { // 移除的是中间节点 p.next = n; n.prev = p; x.item = null; // Don't mess with x's links. They may still be in use by // an iterator. // 这里x的prev和next指针都没有改变,因为他们可能在被iterator使用 --count; notFull.signal(); } }

总结

LinkedBlockingDeque是由链表构成的界限可选的双端阻塞队列,支持O(1)的时间复杂度从两端插入和移除元素,如不指定边界,则为Integer.MAX_VALUE。

由一个ReentrantLock保证同步,使用conditions来实现等待通知。

上面介绍的所有操作基本上就是核心方法啦,诸如putFirst、putLast、takeFirst、takeLast等方法都会调用上面的核心方法,而且实现上面也是比较简单的,就是双端链表的基本操作,不懂的可以画画图帮助理解哈。

以上就是本站»java双端队列作用(java三种队列详解)的相关内容了,更多精彩请关注作者:万年知识

声明:本文由本站【创业者资源平台】作者编辑发布,更多技术关注万年技术!

本文标签: [db:关键词]  

为您推荐

电影播放器哪个最好用(电影播放器哪个最好用的)

如果您正在查找蓝光播放器什么牌子好?那么本蓝光播放器四大品牌榜单可供您作为选购参考。1、海美迪2、OPPO  3、芝杜  4、开博尔一、海美迪  品牌介绍:海美迪科技成立于2005年,是一家专注于高端

2023-07-29 09:05

java双端队列作用 双端队列如何用顺序方式存储

LinkedBlockingDeque概述LinkedBlockingDeque是由链表构成的界限可选的双端阻塞队列,支持O(1)的时间复杂度从两端插入和移除元素,如不指定边界,则为Integer.M

2023-07-29 09:05

android蓝牙通信原理 蓝牙通信的工作原理

蓝牙是一项应用非常广泛的无线技术,在无线音频配件、智能手表和智能家电中都广泛使用。不过蓝牙设备的配对体验并不优秀,而且无法实现跨平台的一致性。不过在 Android 系统中最新引入的 Fast Pai

2023-07-29 09:05

qq聊天记录查看器手机器 qq聊天查看器手机软件

作为一个国人,黑马敢说有90%的人都用过QQ或者微信。黑马每天起床的第一件事,就是拿起手机,打开微信查看有没有收到什么消息。可以说,微信真的成为了黑马的一种生活方式。根据张小龙在“2021微信公开课P

2023-07-29 09:04

淘宝店装修教程(千牛淘宝店铺装修教程)

在淘宝上申请了店铺之后,淘宝店铺都是最基础的样式,想要自己的店铺变得好看或者与众不同一点就需要自己去装修了,而装修肯定是有风格的,就想房子装修一样,那么淘宝店铺装修有哪些风格可以选呢?1.古典风格,古

2023-07-29 09:04

华为路由器管理软件app 华为路由器管理软件app还有哪些

写在前面:普通的无线路由器是大家再熟悉不过的网络设备,然而4G无线路由器想必接触过的人并不多,它最大的优势在于不拉宽带也能上网,这听起来很是不错,试想在一个没有网线的环境里,只要插上4G流量卡,立马就

2023-07-29 09:04