当前位置: 首页 > news >正文

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

相关文章:

  • 【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
  • 【设计模式】单例模式的前世今生
  • 厦门网上在线教育系统,线下老师怎么转型到线上网上授课?
  • Spring底层入门(九)
  • 掌握Android Fragment开发之魂:Fragment的深度解析(下)
  • 小巧简单实用的Linux端口转发工具Rinetd
  • HackBar 新手使用教程(入门)
  • <Linux> 权限
  • Nacos Docker 快速部署----解决nacos鉴权漏洞问题
  • 存储或读取时转换JSON数据
  • Spring Data JPA的作用和用法
  • 【go项目01_学习记录08】
  • Java中的线程
  • 顺序表的实现(迈入数据结构的大门)(完整代码)
  • neo4j-5.11.0安装APOC插件or配置允许使用过程的权限
  • mybatis 中 #{}和 ${}的区别是什么?
  • 深入解析C#中的接口设计原则
  • 106短信群发平台在金融和法务行业的应用分析
  • Spring AOP(2)
  • Spring-依赖注入的处理过程
  • 2.用python爬取的保存在text文件中的格式为MP4的视频url
  • Java基于B/S医院绩效考核管理平台系统源码java+springboot+MySQL医院智慧绩效管理系统源码
  • UE 蓝图堆栈调试
  • UE4_摄像机_使用摄像机的技巧
  • ssm115乐购游戏商城系统+vue
  • 【可实战】被测需求理解(需求文档是啥样的、从哪些角度进行需求评审、需求分析需要分析出哪些内容、如何提高需求分析能力)
  • 伪类和伪元素的区别是什么?
  • gorm-sharding分表插件升级版
  • MoviePy(Python音视频开发)
  • Spring中的FileCopyUtils:文件复制的利器与详解