鸿蒙语言基础类库:【@ohos.util.Deque (线性容器Deque)】

线性容器Deque

icon-note.gif 说明:  本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

Deque(double ended queue)根据循环队列的数据结构实现,符合先进先出以及先进后出的特点,支持两端的元素插入和移除。Deque会根据实际需要动态调整容量,每次进行两倍扩容。

Deque和[Queue]相比,Queue的特点是先进先出,只能在头部删除元素,尾部增加元素。

与[Vector]相比,它们都支持在两端增删元素,但Deque不能进行中间插入的操作。对头部元素的插入删除效率高于Vector,而Vector访问元素的效率高于Deque。

推荐使用场景:  需要频繁在集合两端进行增删元素的操作时,推荐使用Deque。

导入模块

import Deque from '@ohos.util.Deque'; 

Deque

属性

系统能力:  SystemCapability.Utils.Lang

名称参数类型可读可写说明
lengthnumberDeque的元素个数。HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿

QQ截图20240705211318.png

constructor

constructor()

Deque的构造函数。

系统能力:  SystemCapability.Utils.Lang

示例:

let deque = new Deque();

insertFront

insertFront(element: T): void

在deque头部插入元素。

系统能力:  SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT插入的元素。

示例:

let deque = new Deque();
deque.insertFront("a");
deque.insertFront(1);
let b = [1, 2, 3];
deque.insertFront(b);
let c = {name : "lala", age : "13"};
deque.insertFront(false);

insertEnd

insertEnd(element: T): void

在deque尾部插入元素。

系统能力:  SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT插入的元素。

示例:

let deque = new Deque();
deque.insertEnd("a");
deque.insertEnd(1);
let b = [1, 2, 3];
deque.insertEnd(b);
let c = {name : "lala", age : "13"};
deque.insertEnd(false);

has

has(element: T): boolean

判断此Deque中是否含有该指定元素。

系统能力:  SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT指定的元素。

返回值:

类型说明
boolean如果包含指定元素返回true,否则返回false。

示例:

let deque = new Deque();
let result = deque.has("Ahfbrgrbgnutfodgorrogorg");
deque.insertFront("Ahfbrgrbgnutfodgorrogorg");
let result1 = deque.has("Ahfbrgrbgnutfodgorrogorg");

popFirst

popFirst(): T

删除并返回双端队列的首元素。

系统能力:  SystemCapability.Utils.Lang

返回值:

类型说明
T返回被删除的元素。

示例:

let deque = new Deque();
deque.insertFront(2);
deque.insertFront(4);
deque.insertEnd(5);
deque.insertFront(2);
deque.insertFront(4);
let result = deque.popFirst();

popLast

popLast(): T

删除并返回双端队列的尾元素。

系统能力:  SystemCapability.Utils.Lang

返回值:

类型说明
T返回被删除的元素。

示例:

let deque = new Deque();
deque.insertFront(2);
deque.insertEnd(4);
deque.insertFront(5);
deque.insertFront(2);
deque.insertFront(4);
let result = deque.popLast();

forEach

forEach(callbackfn: (value: T, index?: number, deque?: Deque) => void, thisArg?: Object): void

通过回调函数来遍历Deque实例对象上的元素以及元素对应的下标。

系统能力:  SystemCapability.Utils.Lang

参数:

参数名类型必填说明
callbackfnfunction回调函数。
thisArgObjectcallbackfn被调用时用作this值。

callbackfn的参数说明:

参数名类型必填说明
valueT当前遍历到的元素。
indexnumber当前遍历到的下标值。
dequeDeque当前调用forEach方法的实例对象。

示例:

let deque = new Deque();
deque.insertFront(2);
deque.insertEnd(4);
deque.insertFront(5);
deque.insertEnd(4);
deque.forEach((value, index) => {console.log("value:" + value, index);
});

getFirst

getFirst(): T

获取Deque实例中的头元素。

系统能力:  SystemCapability.Utils.Lang

返回值:

类型说明
T返回T型

示例:

let deque = new Deque();
deque.insertEnd(2);
deque.insertEnd(4);
deque.insertFront(5);
deque.insertFront(4);
let result = deque.getFirst();

getLast

getLast(): T

获取Deque实例中的尾元素。

系统能力:  SystemCapability.Utils.Lang

返回值:

类型说明
T返回T型

示例:

let deque = new Deque();
deque.insertFront(2);
deque.insertFront(4);
deque.insertFront(5);
deque.insertFront(4);
let result = deque.getLast();

[Symbol.iterator]

Symbol.iterator: IterableIterator

返回一个迭代器,迭代器的每一项都是一个 JavaScript 对象,并返回该对象。

系统能力:  SystemCapability.Utils.Lang

返回值:

类型 开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。说明
IterableIterator返回一个迭代器。

示例:

let deque = new Deque();
deque.insertFront(2);
deque.insertFront(4);
deque.insertFront(5);
deque.insertFront(4);// 使用方法一:
for (let item of deque) { console.log("value:" + item); 
}// 使用方法二:
let iter = deque[Symbol.iterator]();
let temp = iter.next().value;
while(temp != undefined) {console.log("value:" + temp);temp = iter.next().value;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3223863.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

ESP32的I2S引脚及支持的音频标准使用说明

ESP32 I2S 接口 ESP32 有 2 个标准 I2S 接口。这 2 个接口可以以主机或从机模式,在全双工或半双工模式下工作,并且可被配置为 8/16/32/48/64-bit 的输入输出通道,支持频率从 10 kHz 到 40 MHz 的 BCK 时钟。当 1 个或 2 个 被配置为主机模式…

nvm安装报错(镜像问题)

一、问题报错 安装的时候如果跟着网上早些时候的配置,调整了setting文件,配置镜像的话,可能报这个错误。 这个是因为他没检索到后面的链接地址,因为镜像的地址新的已经更换了。使用这个吧: node_mirror: https://npm…

华为、H3C、锐捷、思科四大设备厂商交换机配置命令总结合辑

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 下午好,我的网工朋友。 一直以来,对于华为、H3C、锐捷、思科交换机的命令配置,不断的有朋友留言,四…

解决本地操作云服务器上的Redis

方案一:开放Redis默认端口,本地通过公网IP端口号的形式访问。 方案二:每次将本地编写好的Java代码打包,放在云服务器上运行。 方案三:配置ssh端口转发,把云服务器的redis端口,映射到本地主机。 …

如何构建数据驱动的企业?爬虫管理平台是关键桥梁吗?

一、数据驱动时代:为何选择爬虫管理平台? 在信息爆炸的今天,数据驱动已成为企业发展的核心战略之一。爬虫管理平台,作为数据采集的第一站,它的重要性不言而喻。这类平台通过自动化手段,从互联网的各个角落…

CentOS 7:停止更新后如何下载软件?

引言 CentOS 7 是一个广受欢迎的 Linux 发行版,它为企业和开发者提供了一个稳定、安全、且免费的操作系统环境。然而,随着时间的推移,CentOS 7 的官方支持已经进入了维护阶段,这意味着它将不再收到常规的更新和新功能,…

Spring Boot集成grpc快速入门demo

1.什么是GRPC? gRPC 是一个高性能、开源、通用的RPC框架,由Google推出,基于HTTP2协议标准设计开发,默认采用Protocol Buffers数据序列化协议,支持多种开发语言。gRPC提供了一种简单的方法来精确的定义服务&#xff0c…

随笔(一)

1.即时通信软件原理(发展) 即时通信软件实现原理_即时通讯原理-CSDN博客 笔记: 2.泛洪算法: 算法介绍 | 泛洪算法(Flood fill Algorithm)-CSDN博客 漫水填充算法实现最常见有四邻域像素填充法&#xf…

ChatGPT提问提示指南PDF下载经典分享推荐书籍

ChatGPT提问提示指南PDF,在本书的帮助下,您将学习到如何有效地向 ChatGPT 提出问题,以获得更准确和有用的回答。我们希望这本书能够为您提供实用的指南和策略,帮助您更好地与 ChatGPT 交互。 ChatGPT提问提示指南PDF下载 无论您是…

ESLint: Delete `␍`(prettier/prettier)解决问题补充

如果你是克隆的,参考这位大佬的文章 vue.js - Delete ␍eslint(prettier/prettier) 错误的解决方案 - 个人文章 - SegmentFault 思否 如果你是个人在本地实现,且改为 仍旧报错,我解决的方案: 改为,同时勾选和我配置一…

【WebGIS平台】传统聚落建筑科普数字化建模平台

基于上述概括出建筑单体的特征部件,本文利用互联网、三维建模和地理信息等技术设计了基于浏览器/服务器(B/S)的传统聚落建筑科普数字化平台。该平台不仅实现了对传统聚落建筑风貌从基础到复杂的数字化再现,允许用户轻松在线构建从…

C++|异常

目录 一、异常概念 二、异常使用 2.1异常的抛出与捕获 2.2异常的重新抛出 2.3异常安全注意事项 2.4异常规范 三、自定义异常体系 四、C标准库的异常体系 五、异常的优缺点 对于传统的错误处理机制,例如c语言常用的: 1.assert,捕获到…

虚拟内存【Linux】

虚拟内存 为什么需要虚拟内存Linux虚拟内存的结构32位系统下的虚拟地址空间64位系统下的虚拟地址空间页表多级页表TLB 流程虚拟内存的作用 为什么需要虚拟内存 为了在进行多进程编码进行内存访问的时候保持内存的隔离性,数据安全性,所以出现了虚拟内存。…

Linux | 安装lb-toolkits 1.2.4库

Linux | 安装 lb-toolkits 最近又需要下载葵花的数据,之前分享过一次代码。今天发现之前的环境不小心被我删了,而运行相关的代码需要安装lb-toolkits这个库,今天正好记录了一下安装lb-toolkits的过程。 这里安装的版本是1.2.4,别…

EPSON LQ80KF II驱动 打印机 0x00000003e3

1.添加打印机 2.按名次选择共享打印机,输入共享打印机ip 3.选择创建新端口 4.选择打印机驱动

办公助手推荐✨

办公助手来啦!✨ 办公助手来啦!✨🌟 主要亮点📝 全新PDF编辑器🎨 丰富的幻灯片版式🌍 改进的从右至左显示🌐 新增本地化选项 📊 应用场景在线办公套件📱 多平台支持&…

如何学好C++?

首先,对于零基础的想学习C的同学,我想要你们先明白一件事:C是一门极为复杂且难以掌握的编程语言。因此推荐在学习C之前可以先去学习C语言,在拥有了一定的知识储备和编程能力后再学习C会更加的高效和相对轻松。 下面推荐从三个方面…

6.Python学习:异常和日志

1.异常的抓取 1.1异常的概念 使用异常前: print(1/0)使用异常后:错误提示更加友好,不影响程序继续往下运行 try:print(10/0) except ZeroDivisionError:print("0不能作为分母")1.2异常的抓取 第一种:如果提前知道可…

idea集成本地tomcat

由于网课老师使用的是eclipse,但是……本人用的是idea,所以不得不去找教程。 解决方案1: https://blog.csdn.net/weixin_54048131/article/details/131359793 这个地方,路径一定要到这个tomcat 否则不识别: 这里的JRE也要配置一下 新问题&…

ISO/OSI七层模型

ISO:国际标准化/ OSI:开放系统互联 七层协议必背图 1.注意事项: 1.上三层是为用户服务的,下四层负责实际数据传输。 2.下四层的传输单位: 传输层; 数据段(报文) 网络层: 数据包(报…