鸿蒙开发-ArkTS语言-容器-非线性容器

鸿蒙开发-UI-web

鸿蒙开发-UI-web-页面

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

鸿蒙开发-ArkTS语言-并发

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

鸿蒙开发-ArkTS语言-容器

文章目录

前言

一、非线性容器

1.HashMap

2.HashSet

3.TreeMap

4.TreeSet

5.LightWeightMap

6.LightWeightSet

7.PlainArray

二、非线性容器使用

总结


前言

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

一、非线性容器

非线性容器实现能快速查找的数据结构,其底层通过hash或者红黑树实现,包括HashMap、HashSet、TreeMap、TreeSet、LightWeightMap、LightWeightSet、PlainArray七种

1.HashMap

常用API如下:

操作

描述

增加元素

通过set(key: K, value: V)函数每次在HashMap增加一个键值对。

访问元素

通过get(key: K)获取key对应的value值。

通过keys()返回一个迭代器对象,包含map中的所有key值。

通过values()返回一个迭代器对象,包含map中的所有value值。

通过entries()返回一个迭代器对象,包含map中的所有键值对。

forEach(callbackFn: (value?: V, key?: K, map?: HashMap<K, V>) => void, thisArg?: Object)访问整个map的元素。

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

修改元素

通过replace(key: K, newValue: V)对指定key对应的value值进行修改操作。

通过forEach(callbackFn: (value?: V, key?: K, map?: HashMap<K, V>) => void, thisArg?: Object)对map中元素进行修改操作。

删除元素

通过remove(key: K)对map中匹配到的键值对进行删除操作。

通过clear()清空整个map集合。

2.HashSet

常用API如下:

操作

描述

增加元素

通过add(value: T)函数每次在HashSet增加一个值。

访问元素

通过values()返回一个迭代器对象,包含set中的所有value值。

通过entries()返回一个迭代器对象,包含类似键值对的数组,键值都是value。

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

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

修改元素

通过forEach(callbackFn: (value?: T, key?: T, set?: HashSet<T>) => void, thisArg?: Object)对set中value进行修改操作。

删除元素

通过remove(value: T)对set中匹配到的值进行删除操作。

通过clear()清空整个set集合。

3.TreeMap

常用API如下:

操作

描述

增加元素

通过set(key: K,value: V)函数每次在TreeMap增加一个键值对。

访问元素

通过get(key: K)获取key对应的value值。

通过getFirstKey()获取map中排在首位的key值。

通过getLastKey()获取map中排在未位的key值。

通过keys()返回一个迭代器对象,包含map中的所有key值。

通过values()返回一个迭代器对象,包含map中的所有value值。

通过entries()返回一个迭代器对象,包含map中的所有键值对。

通过forEach(callbackFn: (value?: V, key?: K, map?: TreeMap<K, V>) => void, thisArg?: Object)访问整个map的元素。

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

修改元素

通过replace(key: K,newValue: V)对指定key对应的value值进行修改操作。

通过forEach(callbackFn: (value?: V, key?: K, map?: TreeMap<K, V>) => void, thisArg?: Object)对map中元素进行修改操作。

删除元素

通过remove(key: K)对map中匹配到的键值对进行删除操作。

通过clear()清空整个map集合。

4.TreeSet

常用API如下:

操作

描述

增加元素

通过add(value: T)函数每次在TreeSet增加一个值。

访问元素

通过values()返回一个迭代器对象,包含set中的所有value值。

通过entries()返回一个迭代器对象,包含类似键值对的数组,键值都是value。

通过getFirstValue()获取set中排在首位的value值。

通过getLastValue()获取set中排在未位的value值。

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

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

修改元素

通过forEach(callbackFn: (value?: T, key?: T, set?: TreeSet<T>) => void, thisArg?: Object)对set中value进行修改操作。

删除元素

通过remove(value: T)对set中匹配到的值进行删除操作。

通过clear()清空整个set集合。

5.LightWeightMap

常用API如下:

操作

描述

增加元素

通过set(key: K,value: V)函数每次在LightWeightMap增加一个键值对。

访问元素

通过get(key: K)获取key对应的value值。

通过getIndexOfKey(key: K)获取map中指定key的index。

通过getIndexOfValue(value: V)获取map中指定value出现的第一个的index。

通过keys()返回一个迭代器对象,包含map中的所有key值。

通过values()返回一个迭代器对象,包含map中的所有value值。

通过entries()返回一个迭代器对象,包含map中的所有键值对。

通过getKeyAt(index: number)获取指定index对应的key值。

通过getValueAt(index: number)获取指定index对应的value值。

通过forEach(callbackFn: (value?: V, key?: K, map?: LightWeightMap<K, V>) => void, thisArg?: Object)访问整个map的元素。

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

修改元素

通过setValueAt(index: number, newValue: V)对指定index对应的value值进行修改操作。

通过forEach(callbackFn: (value?: V, key?: K, map?: LightWeightMap<K, V>) => void, thisArg?: Object)对map中元素进行修改操作。

删除元素

通过remove(key: K)对map中匹配到的键值对进行删除操作。

通过removeAt(index: number)对map中指定index的位置进行删除操作。

通过clear()清空整个map集合。

6.LightWeightSet

常用API如下:

操作

描述

增加元素

通过add(obj: T)函数每次在LightWeightSet增加一个值。

访问元素

通过getIndexOf(key: T)获取对应的index值。

通过values()返回一个迭代器对象,包含map中的所有value值。

通过entries()返回一个迭代器对象,包含map中的所有键值对。

通过getValueAt(index: number)获取指定index对应的value值。

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

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

修改元素

通过forEach(callbackFn: (value?: T, key?: T, set?: LightWeightSet<T>) => void, thisArg?: Object)对set中元素进行修改操作。

删除元素

通过remove(key: K)对set中匹配到的键值对进行删除操作。

通过removeAt(index: number)对set中指定index的位置进行删除操作。

通过clear()清空整个set集合。

7.PlainArray

常用API如下:

操作

描述

增加元素

通过add(key: number,value: T)函数每次在PlainArray增加一个键值对。

访问元素

通过get(key: number)获取key对应的value值。

通过getIndexOfKey(key: number)获取PlainArray中指定key的index。

通过getIndexOfValue(value: T)获取PlainArray中指定value的index。

通过getKeyAt(index: number)获取指定index对应的key值。

通过getValueAt(index: number)获取指定index对应的value值。

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

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

修改元素

通过setValueAt(index:number, value: T)对指定index对应的value值进行修改操作。

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

删除元素

通过remove(key: number)对plainarray中匹配到的键值对进行删除操作。

通过removeAt(index: number)对plainarray中指定index的位置进行删除操作。

通过removeRangeFrom(index: number, size: number)对plainarray中指定范围内的元素进行删除操作。

通过clear()清空整个PlainArray集合。

二、非线性容器使用

非线性容器HashMap、TreeMap、LightWeightMap、PlainArray的使用示例


总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Angular中组件之间的传值

Angular中组件之间的传值 文章目录 Angular中组件之间的传值前言一、父亲向儿子传值二、儿子向父亲传值三、爷爷向孙子传值四、兄弟之间的传值 前言 Angular的组件是构成应用的基础单元&#xff0c;它们封装了HTML模板、TypeScript代码以及CSS样式&#xff0c;以实现特定的功能…

2024蓝桥杯CTF writeUP--packet

根据流量分析&#xff0c;我们可以知道129是攻击机&#xff0c;128被留了php后门&#xff0c;129通过get请求来获得数据 129请求ls Respons在这 里面有flag文件 这里请求打开flag文件&#xff0c;并以base64编码流传输回来 获得flag的base64的数据 然后解码 到手

产品推荐 | 基于 Virtex UltraScale+ XCVU3P的FACE-VPXSSD-3PA 存储板

01 产品概述 FACE&#xff08;FPGA Algorithm aCceleration Engine&#xff09;FPGA算法加速开发引擎是基于FPGA可编程器件构建的一系列算法加速开发引擎平台。FACE-VPXSSD-3PA存储平台是FACE系列中的一员。该平台板载2组2GB 64bit DDR4、2路QSFP28光接口、4个NVME SSD M.2接口…

Elasticsearch的基本使用

Elasticsearch的基本使用 1.基本概念1.1 文档和字段1.2 索引和映射1.3 mysql与elasticsearch对比 2.索引库2.1 es中mapping映射属性2.2.es中索引库的增删改查 3.文档3.1 新增文档3.2 查询文档3.3 删除文档3.4 修改文档3.4.1 全量修改3.4.2 增量修改3.5 总结 4.DSL查询语法4.1 D…

如何提高日语听力?日语学习日语培训柯桥小语种学校

每次一说起练日语听力&#xff0c;总离不开一个词&#xff0c;那就是“磨耳朵”。 可是&#xff0c;“磨耳朵”真的有用吗&#xff1f; 在讨论这个问题之前&#xff0c;我们需要先知道&#xff1a;什么是“磨耳朵”&#xff1f; 所谓的“磨耳朵”&#xff0c;其实就是让我们的耳…

数据结构===二叉树

文章目录 概要二叉树的概念分类存储遍历前序中序后序 小结 概要 简单写下二叉树都有哪些内容&#xff0c;这篇文章要写什么 二叉树的概念分类&#xff0c;都有哪些二叉树遍历 对一个数据结构&#xff0c;最先入手的都是定义&#xff0c;然后才会有哪些分类&#xff0c;对二叉…

LVS 负载均衡部署 NAT模式

一、环境准备 配置环境&#xff1a; 负载调度器&#xff1a;配置双网卡 内网&#xff1a;172.168.1.11(ens33) 外网卡&#xff1a;12.0.0.1(ens37)二台WEB服务器集群池&#xff1a;172.168.1.12、172.168.1.13 一台NFS共享服务器&#xff1a;172.168.1.14客户端&#xff…

爬虫爬取必应和百度搜索界面的图片

爬虫爬取必应和百度搜索界面的图片 爬取bing搜索图片界面爬取百度搜索界面图片结果如下 爬取bing搜索图片界面 浏览器驱动下载地址 对应版本即可 浏览器驱动 mad直接用 import os import re from selenium import webdriver from selenium.webdriver import Keys from sel…

docker系列9:容器卷挂载(下)

传送门 docker系列1&#xff1a;docker安装 docker系列2&#xff1a;阿里云镜像加速器 docker系列3&#xff1a;docker镜像基本命令 docker系列4&#xff1a;docker容器基本命令 docker系列5&#xff1a;docker安装nginx docker系列6&#xff1a;docker安装redis docker系…

2024抖音小店还能做吗?值得开通吗?一文带你揭秘!

大家好&#xff0c;我是电商花花。 抖音小店已经出台了这么几年&#xff0c;很多人不禁发问2024年的抖音小店还能做吗&#xff1f;还有利润空间和机会吗&#xff1f; 按照我们做电商这么多年来的经验&#xff0c;一家抖音小店的电商行业风向来看&#xff0c;2024年的抖音小店…

释放创造力,低成本实现您的梦想应用 —— 尽在我们的开源低代码平台!

在数字化时代&#xff0c;每个企业都渴望拥有自己的专属应用&#xff0c;但传统开发模式的高成本和技术壁垒让许多梦想搁浅。现在&#xff0c;我们为您带来了革命性的解决方案 —— 一个开源、免费、且功能强大的低代码开发平台&#xff01; 为什么选择我们的低代码平台&#…

读天才与算法:人脑与AI的数学思维笔记22_中文房间

1. 华生的工作模式 1.1. 请你想象一个巨大的场景&#xff0c;其中有单词、名字和其他可能的答案&#xff0c;它们散布在各处 1.1.1. IBM所做的第一步是以某种连贯的方式排列单词 1.1.2. 第二步是理解每个问题&#xff0c;并为该问题生成候选位置标记 1.1.2.1. 爱因斯坦会演…

Day31:单元测试、项目监控、项目部署、项目总结、常见面试题

单元测试 保证独立性。 Assert&#xff1a;断言&#xff0c;一般用来比较是否相等&#xff0c;比如 Assert.assertEquals 在JUnit测试框架中&#xff0c;BeforeClass&#xff0c;Before&#xff0c;After和AfterClass是四个常用的注解&#xff0c;它们的作用如下&#xff1a; …

AI助力制造行业探索创新路径

近期&#xff0c;著名科技作家凯文凯利&#xff08;K.K.&#xff09;来到中国&#xff0c;发表了一场演讲,给广大听众带来了深刻的启示。他在演讲中强调了人工智能&#xff08;AI&#xff09;对全球经济的重大影响&#xff0c;并提出了AI发展的多个观点&#xff1a; AI的多样性…

【MATLAB源码-第50期】基于simulink的BPSK调制解调仿真,输出误码率。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. Bernoulli Binary: 这个模块生成伯努利二进制随机数&#xff0c;即0或1。这些数字表示要传输的原始数字信息。 2. Unipolar to Bipolar Converter: 此模块将伯努利二进制数据从0和1转换为-1和1&#xff0c;这是BPSK调制的…

基于Springboot的房屋租赁管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的房屋租赁管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

Certbot免费证书的安装,使用,自动续期

首先你得先确认你得linux是那个操作系统&#xff0c;可以用这几个命令试一下。两个都可以试试 cat /etc/os-releaseuname -a然后看是Certbot得安装&#xff1a; CentOS: yum update yum install certbot -y Debian&#xff1a; apt update apt install certbot -y 有的云…

算法设计与分析——期末1h

目录 第一章 算法的定义 算法的三要素 算法的基本性质 算法的时间复杂度数量级&#xff1a; 第二章 兔子繁殖问题&#xff08;递推法&#xff09; 猴子吃桃问题&#xff08;递推法&#xff09; 穿越沙漠问题&#xff08;递推法&#xff08;倒推&#xff09;&#xff09; 百钱百…

【Linux—进程间通信】共享内存的原理、创建及使用

什么是共享内存 共享内存是一种计算机编程中的技术&#xff0c;它允许多个进程访问同一块内存区域&#xff0c;以此作为进程间通信&#xff08;IPC, Inter-Process Communication&#xff09;的一种方式。这种方式相对于管道、套接字等通信手段&#xff0c;具有更高的效率&…

C语言二分查找的区间问题

概念 什么是二分查找呢&#xff1f; 二分查找&#xff1a;在有序数组中查找某一特定元素的搜索算法。 二分查找又称折半查找&#xff0c;通过将数组折半&#xff0c;用中间值和查找值作比较&#xff0c;多次使用&#xff0c;直到找到要查找的值。 注意:二分查找的前提是&#…