鸿蒙开发-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.mzph.cn/web/9001.shtml

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

相关文章

(一)Linux的vim编辑器的使用

一.vim编辑器 Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。 二…

活动倒计时!四城再度联动,盘古信息与您相约上海|重庆|东莞|合肥

五月&#xff0c;是生命的复苏季&#xff0c;是希望的播种月。在这个充满活力的时节&#xff0c;盘古信息将在上海、重庆、东莞、合肥四地盛大举办四场精彩纷呈的活动。届时&#xff0c;我们将呈现一系列精心打造的工业软件产品及解决方案&#xff0c;带您领略制造业数字化转型…

设计模式概览说明

Java 中常见的设计模式有很多种。以下是其中一些主要的设计模式&#xff0c;共23种&#xff1a; 1、创建型模式&#xff08;Creational Patterns&#xff09;&#xff08;5种&#xff09; 工厂方法模式&#xff08;Factory Method Pattern&#xff09; 抽象工厂模式&#xff08…

深入入IAEA底层LinkedList

✅作者简介&#xff1a;大家好&#xff0c;我是再无B&#xff5e;U&#xff5e;G&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;再无B&#xff5e;U&#xff5e;G-CSDN博客 目标&#xff1a; 1.掌握LinkedList 2.…

ESG榜单冲击数据集(2000-2022年)

参照《财经研究》中刘柏&#xff08;2024&#xff09;的做法&#xff0c;以2015年为中点&#xff0c;根据商道荣绿2015年6月公开的ESG榜单数据&#xff0c;构建ESG榜单冲击的DID数据&#xff0c;如果公司属于ESG榜单冲击的公司&#xff0c;且年份≥2015&#xff0c;则为1&#…

母婴店运用商城小程序店铺的效果是什么

母婴市场规模高&#xff0c;还可与不少行业无缝衔接&#xff0c;尤其是以90后、00后为主的年轻人&#xff0c;在备孕生育和婴儿护理前后等整体流程往往不惜重金且时间长&#xff0c;母婴用品无疑是必需品&#xff0c;商家需要多方面拓展全面的客户及打通场景随时消费路径。 运…

centos下重启redis

磁盘满了&#xff0c;发现连接不上redis了&#xff0c;我们重启一下 // 先查看下redis进程号&#xff0c;得到是8677 ps -ef | grep redis root 2642 31692 0 16:50 pts/5 00:00:00 grep --colorauto redis root 8677 1 0 4月25 ? 00:09:47 ./src/r…

华为OD机试【全量和已占用字符集】(java)(100分)

1、题目描述 给定两个字符集合&#xff0c;一个是全量字符集&#xff0c;一个是已占用字符集&#xff0c;已占用字符集中的字符不能再使用。 2、输入描述 输入一个字符串 一定包含&#xff0c;前为全量字符集 后的为已占用字符集&#xff1b;已占用字符集中的字符一定是全量…

Linux网络部分——部署YUM仓库及NFS共享服务

目录 一、yum仓库服务 1. 软件仓库的提供方式 2.如何构建并使用ftp软件仓库&#xff08;与本地yum源方法一致&#xff09; 3.如何搭建使用yum在线源&#xff1f; 4.yum软件包下载如何保存&#xff1f; 二、NFS共享存储服务 1.存储类型 2.提供共享存储的组合 3.NFS网络…

Web前端开发 - 1 - HTML5基础

HTML5基础 1. HTML文档结构和基本语法2. HTML4元素(91)1. 结构元素2. 内容元素3. 修饰元素 3. HTML4属性1. 核心属性2. 语言属性3. 键盘属性4. 内容属性5. 其他属性 4. HTML5元素1. 结构元素2. 功能元素3. 表单元素 5. HTML5属性1. 表单属性2. 链接属性3. 其他属性4. HTML5全局…

isinstance和type区别

isinstance和type区别 在python中&#xff0c;我们由两种方式来判断一个类所属的类型&#xff1a; isinstance(x, A)用来判断x是不是由类A实例化得到&#xff0c;或者由A的子类实例化变量得到 type()&#xff0c;返回这个类的类型 通过type(x) is A来判断x是不是由A来创建的&…

深入探索网络代理:SOCKS5、代理IP与HTTP在网络安全中的作用

在网络通信的广阔领域中&#xff0c;数据安全和隐私保护是绕不开的重要话题。网络代理&#xff0c;特别是SOCKS5代理、代理IP和HTTP代理&#xff0c;是实现这些保护的关键技术。它们在匿名性、数据加密和跨地域通信方面发挥着至关重要的作用。本文将深入探讨这些技术的机制、优…

山东齐鲁文化名人颜廷利:教育的本质区别重点是什么

教育的本质区别重点是‘方式’&#xff0c; 现在的教育却成为了一种‘形式’&#xff1b; 教育的核心价值关键载于‘实践’&#xff0c; 当前我们的教育观念却变成了消耗‘时间’&#xff1b; ‘读书’的原则在于‘堵疏’&#xff0c;作为汉语‘堵疏’一词&#xff0c;顾名思义…

Mongodb操作与Java(二)查询语句汇总

MongoDB概念 MongoDB 基本概念指的是学习 MongoDB 最先应该了解的词汇&#xff0c;比如 MongoDB 中的"数据库"、"集合"、"文档"这三个名词&#xff1a; 文档&#xff08;Document&#xff09;&#xff1a; 文档是 MongoDB 中最基本的数据单元&…

设计模式在JavaScript中的应用:介绍一些常见的设计模式如观察者模式,工厂模式,策略模式等,并展示如何在JavaScript中实现

1、观察者模式&#xff1a;观察者模式是一种在项目中创建可观察者的方法&#xff0c;以便在对象之间实现好的通信机制。 在JavaScript中我们可以使用EventEmitter类来实现观察者模式。 class EventEmitter {constructor() {this.events {};}on(type, listener) {this.events…

掌握学习平台中的高效学习技巧

学习在我们生活中起着至关重要的作用。随着科技的发展&#xff0c;越来越多的学习平台为我们提供了更广阔的学习机会。然而&#xff0c;要实现高效学习&#xff0c;我们需要掌握一些技巧。 规划学习目标 首先&#xff0c;一个明确的学习目标是高效学习的基础。在使用学习平台…

如何将jsp项目转成springboot项目

昨天说过&#xff0c;springboot推荐使用Thymeleaf作为前后端渲染的模板引擎&#xff0c;为什么推荐用Thymeleaf呢&#xff0c;有以下几个原因&#xff1a; 动静结合&#xff1a;Thymeleaf支持HTML原型&#xff0c;允许在HTML标签中增加额外的属性来实现模板与数据的结合。这样…

ts中type和interface的区别

面试中被问到&#xff0c;在TypeScript中&#xff0c;Type和Interface的区别这个问题。 区别 首先&#xff0c;在TypeScript中&#xff0c;Type和Interface都用于定义对象或函数的类型&#xff0c;区别如下&#xff1a; 语法不同 interface使用关键字interface来定义&#…

Redis缓存雪崩,击穿,穿透问题

缓存雪崩、击穿、穿透、发生的背景 ​ 作者最近在写一个社区论坛项目&#xff0c;初始设想将论坛里用户发布的帖子内容存到数据库中&#xff0c;当用户访问论坛里的帖子时&#xff0c;帖子信息都从数据库中查。众所周知数据库的帖子数据是存在磁盘中的&#xff0c;而磁盘读写数…

20240509解决Protel99se导入philips.ddb出现File is not recognized的问题

20240509解决Protel99se导入philips.ddb出现File is not recognized的问题 2024/5/9 16:25 缘起&#xff1a;最近需要用到/画PCB&#xff0c;想到十年前用过Protel99SE。 使用的系统&#xff1a;WIN10/WIN11都会出错。WIN7没有测试&#xff01; 从115网盘的角落里找到七集视频…