鸿蒙开发-ArkTS语言-容器

鸿蒙开发-UI-交互事件-键鼠事件

鸿蒙开发-UI-交互事件-焦点事件

鸿蒙开发-UI-交互事件-手势事件

鸿蒙开发-UI-web

鸿蒙开发-UI-web-页面

鸿蒙开发-ArkTS语言-基础类库

鸿蒙开发-ArkTS语言-并发

鸿蒙开发-ArkTS语言-并发-案例

文章目录

前言

一、容器类库概述

二、线性容器

1.ArrayList

2.Vector

3.List

4.LinkedList

5.Deque

6.Queue

7.Stack

三、线性容器使用

总结


前言

上文详细学习了鸿蒙开发使用多线程并发的开发方式,针对CPU密集、IO密集以及同步任务开发场景做了一些开发说明,本文将学习鸿蒙开发ArkTS语言容器类库相关知识

一、容器类库概述

容器类库用于存储各种数据类型的元素,并具备一系列处理数据元素的方法。容器类采用了类似静态语言的方式来实现,并通过对存储位置以及属性的限制,让每种类型的数据都能在完成自身功能的基础上去除冗余逻辑,保证了数据的高效访问,提升了应用的性能。

二、线性容器

线性容器实现能按顺序访问的数据结构,其底层主要通过数组实现,包括ArrayList、Vector、List、LinkedList、Deque、Queue、Stack七种。

1.ArrayList

常用操作API:

操作

描述

增加元素

通过add(element: T)函数每次在数组尾部增加一个元素。

通过insert(element: T, index: number)在指定位置插入一个元素。

访问元素

通过arr[index]获取指定index对应的value值,通过指令获取保证访问速度。

通过forEach(callbackFn: (value: T, index?: number, arrlist?: ArrayList<T>) => void, thisArg?: Object): void访问整个ArrayList容器的元素。

通过[Symbol.iterator]():IterableIterator<T>迭代器进行数据访问。

修改元素

通过arr[index] = xxx修改指定index位置对应的value值。

删除元素

通过remove(element: T)删除第一个匹配到的元素。

通过removeByRange(fromIndex: number, toIndex:number)删除指定范围内的元素。

2.Vector

常用操作API:

操作

描述

增加元素

通过add(element: T)函数每次在数组尾部增加一个元素。

通过insert(element: T, index: number)在指定位置插入一个元素。

访问元素

通过vec[index]获取指定index对应的value值,通过指令获取保证访问速度。

通过get(index: number)获取指定index位置对应的元素。

通过getLastElement()获取最后一个元素。

通过getIndexOf(element:T)获取第一个匹配到元素的位置。

通过getLastIndexOf(element:T)获取最后一个匹配到元素的位置。

通过forEach(callbackFn: (value: T, index?: number, Vector?: Vector<T>) => void, thisArg?: Object)访问整个Vector的元素。

通过[Symbol.iterator]():IterableIterator<T>迭代器进行数据访问。

修改元素

通过vec[index]=xxx修改指定index位置对应的value值。

通过set(index:number,element:T)修改指定index位置的元素值为element。

通过setLength(newSize:number)设置Vector的长度大小。

删除元素

通过removeByIndex(index:number)删除index位置对应的value值。

通过remove(element:T)删除第一个匹配到的元素。

通过removeByRange(fromIndex:number,toIndex:number)删除指定范围内的元素。

3.List

常用操作API:

操作

描述

增加元素

通过add(element: T)函数每次在数组尾部增加一个元素。

通过insert(element: T, index: number)在指定位置插入一个元素。

访问元素

通过list[index]获取指定index对应的value值,通过指令获取保证访问速度。

通过get(index: number)获取指定index位置对应的元素。

通过getFirst()获取第一个元素。

通过getLast()获取最后一个元素。

通过getIndexOf(element: T)获取第一个匹配到元素的位置。

通过getLastIndexOf(element: T)获取最后一个匹配到元素的位置。

通过forEach(callbackfn: (value:T, index?: number, list?: List<T>)=> void,thisArg?: Object)访问整个List的元素。

通过[Symbol.iterator]():IterableIterator<T>迭代器进行数据访问。

修改元素

通过list[index] = xxx修改指定index位置对应的value值。

通过set(index:number, element: T)修改指定index位置的元素值为element。

通过replaceAllElements(callbackFn:(value: T,index?: number,list?: List<T>)=>T,thisArg?: Object)对List内元素进行替换操作。

删除元素

通过removeByIndex(index:number)删除index位置对应的value值。

通过remove(element:T)删除第一个匹配到的元素。

4.LinkedList

常用操作API:

操作

描述

增加元素

通过add(element: T)函数每次在数组尾部增加一个元素。

通过insert(index: number, element: T)在指定位置插入一个元素。

访问元素

通过list[index]获取指定index对应的value值,通过指令获取保证访问速度。

通过get(index: number)获取指定index位置对应的元素。

通过getFirst()获取第一个元素。

通过getLast()获取最后一个元素。

通过getIndexOf(element: T)获取第一个匹配到元素的位置。

通过getLastIndexOf(element: T)获取最后一个匹配到元素的位置。

通过forEach(callbackFn: (value: T, index?: number, list?: LinkedList<T>) => void, thisArg?: Object)访问整个LinkedList的元素。

通过[Symbol.iterator]():IterableIterator<T>迭代器进行数据访问。

修改元素

通过list[index]=xxx修改指定index位置对应的value值。

通过set(index: number,element: T)修改指定index位置的元素值为element。

删除元素

通过removeByIndex(index: number)删除index位置对应的value值。

通过remove(element: T)删除第一个匹配到的元素。

5.Deque

常用操作API:

操作

描述

增加元素

通过insertFront(element: T)函数每次在队头增加一个元素。

增加元素

通过insertEnd(element: T)函数每次在队尾增加一个元素。

访问元素

通过getFirst()获取队首元素的value值,但是不进行出队操作。

通过getLast()获取队尾元素的value值,但是不进行出队操作。

通过popFirst()获取队首元素的value值,并进行出队操作。

通过popLast()获取队尾元素的value值,并进行出队操作。

通过forEach(callbackFn:(value: T, index?: number, deque?: Deque<T>) => void, thisArg?: Object)访问整个Deque的元素。

通过[Symbol.iterator]():IterableIterator<T>迭代器进行数据访问。

修改元素

通过forEach(callbackFn:(value: T, index?: number, deque?: Deque<T>)=> void, thisArg?: Object)对队列进行修改操作。

删除元素

通过popFirst()对队首元素进行出队操作并删除。

通过popLast()对队尾元素进行出队操作并删除。

6.Queue

常用操作API:

操作

描述

增加元素

通过add(element: T)函数每次在队尾增加一个元素。

访问元素

通过getFirst()获取队首元素的value值,但是不进行出队操作。

通过pop()获取队首元素的value值,并进行出队操作。

通过forEach(callbackFn: (value: T, index?: number, queue?: Queue<T>) => void,thisArg?: Object)访问整个Queue的元素。

通过[Symbol.iterator]():IterableIterator<T>迭代器进行数据访问。

修改元素

通过forEach(callbackFn:(value: T, index?: number, queue?: Queue<T>) => void,thisArg?: Object)对队列进行修改操作。

删除元素

通过pop()对队首进行出队操作并删除。

7.Stack

常用操作API:

操作

描述

增加元素

通过push(item: T)函数每次在栈顶增加一个元素。

访问元素

通过peek()获取栈顶元素的value值,但是不进行出栈操作。

通过pop()获取栈顶的value值,并进行出栈操作。

通过forEach(callbackFn: (value: T, index?: number, stack?: Stack<T>) => void, thisArg?: Object)访问整个Stack的元素。

通过[Symbol.iterator]():IterableIterator<T>迭代器进行数据访问。

通过locate(element: T)获取元素对应的位置。

修改元素

通过forEach(callbackFn:(value: T, index?: number, stack?: Stack<T>) => void, thisArg?: Object)对栈内元素进行修改操作。

删除元素

通过pop()对栈顶进行出栈操作并删除。

三、线性容器使用

线性容器常用API使用案例


总结

本文详细学习鸿蒙开发ArkTS语言容器类库线性容器的特点以及常见操作的API,下文将学习非线性容器的相关知识。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何将视频转换成gif表情包?超简单的方法分享

把视频中的片段截取制作成gif动画表情包是现在网络中常见的制作图片的一种方法。Gif表情包能够调节聊天中的氛围&#xff0c;快速有趣的传递信息。也因为gif动图兼容性高、体积小便于分享所以在现在的网络中非常的收欢迎。接下来&#xff0c;小编就给大家分享一下怎么把视频转g…

Linux字符设备驱动(一) - 框架

字符设备是Linux三大设备之一(另外两种是块设备&#xff0c;网络设备)&#xff0c;字符设备就是字节流形式通讯的I/O设备,绝大部分设备都是字符设备&#xff0c;常见的字符设备包括鼠标、键盘、显示器、串口等等&#xff0c;当我们执行ls -l /dev的时候&#xff0c;就能看到大量…

2024.05.06作业

自由发挥应用场景&#xff0c;实现登录界面。 要求&#xff1a;尽量每行代码都有注释。 #include "yuanshen.h"yuanshen::yuanshen(QWidget *parent): QWidget(parent) {//窗口相关设置this->resize(1600,910);this->setFixedSize(1600,910);//窗口标题this-…

管理能力学习笔记九:授权的常见误区和如何有效授权

授权的常见误区 误区一&#xff1a;随意授权 管理者在授权工作时&#xff0c;需要依据下属的能力、经验、意愿问最自己&#xff1a;这项工作适合授权给Ta做吗&#xff1f;如果没有&#xff0c;可以通过哪些方法进行培训呢&#xff1f; 误区二&#xff1a;缺乏信任 心理暗示…

腾讯崛起!2024年最赚钱的电商平台,竟然来自视频号

大家好&#xff0c;我是电商月月 说到卖货平台&#xff0c;这两年“抖音”绝对是所有人心里最赚钱的电商平台 抖音小店的商家利用抖店后台的“精选联盟”引流&#xff0c;不用自己直播&#xff0c;也能靠直播卖货赚的盆满钵满 于是好多平台都效仿抖店的直播卖货形式来获取更…

BGP的选路 :

前提条件 &#xff1a; 丢弃所有不可用的路由信息。 属性的名称 传播范围 默认值 评判标准 PV&#xff08;优选值&#xff09; 不传播 0&#xff08;0-65535&#xff09; 越大越优 LP&#xff08;本地优先级&#xff09; IBGP对等体 之间 100 越大越优 AS_PATH …

中间件研发之Springboot自定义starter

Spring Boot Starter是一种简化Spring Boot应用开发的机制&#xff0c;它可以通过引入一些预定义的依赖和配置&#xff0c;让我们快速地集成某些功能模块&#xff0c;而无需繁琐地编写代码和配置文件。Spring Boot官方提供了很多常用的Starter&#xff0c;例如spring-boot-star…

PMO全面指南:一文读懂PMO的功能、职责、类型、构建

多年来&#xff0c;PMO 的概念在多个行业和类型的组织中越来越受欢迎。一开始&#xff0c;只有大型跨国公司才熟悉它&#xff0c;但后来&#xff0c;许多中小型公司开始采用 PMO 来进行高效的项目管理并实现其战略目标。 根据Statista的数据&#xff0c;目前有80%的组织设有至…

企业网站 | 被攻击时该怎么办?

前言 每天&#xff0c;数以千计的网站被黑客入侵。发生这种情况时&#xff0c;被入侵网站可用于从网络钓鱼页面到SEO垃圾邮件或者其它内容。如果您拥有一个小型网站&#xff0c;很容易相信黑客不会对它感兴趣。不幸的是&#xff0c;通常情况并非如此。 黑客入侵网站的动机与所…

09_电子设计教程基础篇(电阻)

文章目录 前言一、电阻原理二、电阻种类1.固定电阻1、材料工艺1、线绕电阻2、非线绕电阻1、实心电阻1、有机实心电阻2、无机实心电阻 2、薄膜电阻&#xff08;常用&#xff09;1、碳膜电阻2、合成碳膜电阻3、金属膜电阻4、金属氧化膜电阻5、玻璃釉膜电阻 3、厚膜电阻&#xff0…

segformer部分错误

亲测有用 1、TypeError: FormatCode() got an unexpected keyword argument ‘verify‘ mmcv中出现TypeError: FormatCode() got an unexpected keyword argument ‘verify‘-CSDN博客 pip install yapf0.40.0 2、“EncoderDecoder: ‘mit_b1 is not in the backbone regist…

达梦数据库导入数据问题

进行数据导入的时候遇到了导入数据问题 第一个问题&#xff1a; 该工具不能解析此文件&#xff0c;请使用更高版本的工具 这个是因为版本有点低&#xff0c;需要下载最新的达梦数据库 第二个问题&#xff1a; &#xff08;1&#xff09;本地编码&#xff1a;PG_GBK, 导入文…

美特CRM upload.jsp 文件上传致RCE漏洞复现(CNVD-2023-06971)

0x01 产品简介 MetaCRM是一款智能平台化CRM软件,通过提升企业管理和协同办公,全面提高企业管理水平和运营效率,帮助企业实现卓越管理。美特软件开创性地在CRM领域中引入用户级产品平台MetaCRM V5/V6,多年来一直在持续地为客户创造价值,大幅提升了用户需求满足度与使用的满意…

21 内核开发-临界区及临界区代码段判断

内核开发-临界区判断 目录 内核开发-临界区判断 1.定义 2.临界区实现机制 3.使用互斥锁实现临界区的示例 4.怎么识别是临界区代码 5.总结 1.定义 临界区是计算机系统中的一段代码&#xff0c;在任何时刻只能被一个线程执行。临界区的目的是防止多个线程同时访问共享资源…

Make3D数据集相关介绍

一、参考资料 Make3d数据集使用方法 二、相关介绍 1. 简介 Make3D 数据集的每帧图像的深度值均由激光雷达进行采集&#xff0c;相较于 Kinect 相机采集的深度信息&#xff0c;该测距仪可以得到室外图像更加精确的深度信息&#xff0c;而且测距范围更大&#xff0c;与普通的…

【stm32笔记】DSP库调用

参考&#xff1a;DSP库调用 , __CC_ARM,__TARGET_FPU_VFP, __FPU_PRESENT1U, ARM_MATH_CM4把需要的库复制出来单独用&#xff0c;方便移植

websevere服务器从零搭建到上线(三)|IO多路复用小总结和服务器的基础框架

文章目录 epollselect和poll的优缺点epoll的原理以及优势epoll 好的网络服务器设计Reactor模型图解Reactor muduo库的Multiple Reactors模型 epoll select和poll的优缺点 1、单个进程能够监视的文件描述符的数量存在最大限制&#xff0c;通常是1024&#xff0c;当然可以更改数…

什么是X电容和Y电容?

先补充个知识&#xff1a; 一、什么是差模信号和共模信号 差模信号&#xff1a;大小相等&#xff0c;方向相反的交流信号&#xff1b;双端输入时&#xff0c;两个信号的相位相差180度 共模信号&#xff1a;大小相等。方向相同。双端输入时&#xff0c;两个信号相同。 二、安规…

小程序如何重启

用户在使用小程序的过程中&#xff0c;有时候会碰到一些问题。比如小程序数据不加载、卡顿、崩溃或者出现其他异常情况。这时候&#xff0c;最简单的办法就是重启小程序。但是很多客户不知道如何重启小程序&#xff0c;下面就具体介绍小程序重新启动的几种方法。 1. 强制关闭&…

CWDM、DWDM、MWDM、LWDM:快速了解光波复用技术

在现代光纤通信领域&#xff0c;波分复用&#xff08;WDM&#xff09;技术作为一项先进的创新脱颖而出。它通过将多个不同波长和速率的光信号汇聚到一根光纤中来有效地传输数据。本文将深入探讨几种关键的 WDM 技术&#xff08;CWDM、DWDM、MWDM 和 LWDM&#xff09;&#xff0…