鸿蒙开发-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.hqwc.cn/news/681726.html

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

相关文章

ICode国际青少年编程竞赛- Python-2级训练场-for循环练习2

ICode国际青少年编程竞赛- Python-2级训练场-for循环练习2 1、 for i in range(5):Dev.step(9 - i * 2)Dev.turnLeft()2、 for i in range(3):Spaceship.step(i 1)Spaceship.turnRight()Spaceship.step(i 1)Spaceship.turnLeft()3、 for i in range(4):Dev.step(10 - i…

对象复制工具Orika,快速实现两个java对象的属性赋值

一、maven依赖引入orika <dependency><groupId>ma.glasnost.orika</groupId><artifactId>orika-core</artifactId><version>1.5.4</version></dependency>二、Orika工具类 import io.swagger.annotations.ApiModel; import io…

1707jsp电影视频网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 校园商城派送系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数…

3d粒子系统可以做什么模型?---模大狮模型网

在3D建模与动画领域&#xff0c;粒子系统是一种强大的工具&#xff0c;能够模拟出各种粒子效果&#xff0c;如火焰、水流、烟雾等&#xff0c;为场景增添了生动与真实感。然而&#xff0c;除了这些传统的应用外&#xff0c;3D粒子系统还有许多其他令人惊叹的用途。在本文中&…

Bert 实现情感分析任务

BERT Bert &#xff08;Bidirectional Encoder Representations from Transformers&#xff09;预训练模型是 Google 2018开源的自然语言模型&#xff0c;主要有以下特点。 像它名字一样&#xff0c;BERT最显著的特点是其能够为文本中的每个标记考虑双向上下文。与传统的基于…

【漏洞复现】GB28181摄像头管理平台api接口处存在未授权漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

html--瀑布效果

<!doctype html> <html> <head> <meta charset"utf-8"> <title>瀑布效果</title><style> body {background: #222;color: white;overflow:hidden; }#container {box-shadow: inset 0 1px 0 #444, 0 -1px 0 #000;height: 1…

如果你这样使用电路仿真软件,你就无敌了!

在电子设计领域&#xff0c;电路仿真软件如同一把锋利的宝剑&#xff0c;掌握它&#xff0c;你就能在复杂的电子世界中游刃有余。今天&#xff0c;就让我们一起探讨如何高效利用电路仿真软件&#xff0c;让你在电子设计领域所向披靡&#xff01; 一、熟悉软件界面与基础操作 …

AI电视起风,三星电视打破“隔代飞跃”,在AI纪元再次领跑

作者 | 曾响铃 文 | 响铃说 要说什么是当下最热的话题&#xff0c;刚落下帷幕的北京车展一定是其中之一&#xff0c;除了各类让人眼花缭乱的新车&#xff0c;纷至沓来的各界行业大佬&#xff0c;也让车展话题度被不断拉高。在此之外&#xff0c;此次车展还刮起了一股“旋风”…

开源文档管理系统Paperless-ngx如何在Linux系统运行并发布至公网

文章目录 1. 部署Paperless-ngx2. 本地访问Paperless-ngx3. Linux安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 Paperless-ngx是一个开源的文档管理系统&#xff0c;可以将物理文档转换成可搜索的在线档案&#xff0c;从而减少纸张的使用。它内置…

作为餐饮行业HR,怎么选择一套合适的HCM人事管理系统?

在餐饮业这个行业中&#xff0c;人员流动性较高&#xff0c;特别是对于服务员和厨师这类基层员工&#xff0c;招聘一直是一个难题。根据艾瑞数据测算&#xff0c;到2024年&#xff0c;中国餐饮行业的年收入将超过6万亿元&#xff0c;年复合增长率高达8.8%。作为餐饮企业的品牌战…

长难句打卡5.9

For example, the Long Now Foundation has as its flagship project a mechanical clock that is designed to still be marking time thousands of years hence. 例如,今日永存资金会将机械钟表视为旗舰项目,因此该钟表旨在为未来几千年保持计时。 Foundation n.基金会flag…