HarmonyOS 非线性容器LightWeightMap 常用的几个方法

LightWeightMap可用于存储具有关联关系的key-value键值对集合,存储元素中key值唯一,每个key对应一个value。

LightWeightMap依据泛型定义,采用轻量级结构,初始默认容量大小为8,每次扩容大小为原始容量的两倍。

集合中key值的查找依赖于hash算法,通过一个数组存储hash值,然后映射到其他数组中的key值及value值。

LightWeightMap和HashMap都是用来存储键值对的集合,LightWeightMap占用内存更小。

推荐使用场景: 当需要存取key-value键值对时,推荐使用占用内存更小的LightWeightMap。

HarmonyOS 非线性容器LightWeightMap  的好处 

内存占用小

  • LightWeightMap采用轻量级结构,相较于其他键值对存储容器(如HashMap),在存储相同数量的键值对时,LightWeightMap占用的内存更小。
  • 这使得LightWeightMap在内存敏感的场景中具有显著优势,如移动设备或嵌入式系统中的应用开发。

2. 高效的键值对存储与查找

  • LightWeightMap依据泛型定义,通过hash算法实现键值的快速查找。
  • 它使用一个数组存储hash值,然后映射到其他数组中的键值对,这种设计使得查找效率较高。

3. 灵活的扩容机制

  • LightWeightMap的初始默认容量大小为8,每次扩容大小为原始容量的两倍。
  • 这种灵活的扩容机制确保了LightWeightMap在存储大量数据时仍能保持较高的性能,同时避免了频繁的扩容操作带来的开销。

4. 适用于多种场景

  • 当需要存取key-value键值对时,LightWeightMap是一个很好的选择。
  • 它的轻量级结构和高效性能使得它在各种应用场景中都能发挥出色的表现,如缓存管理、数据映射等。

5. 易于使用与集成

  • LightWeightMap提供了简洁的API接口,使得开发者可以方便地对其进行增、删、改、查等操作。
  • 同时,LightWeightMap可以轻松地与其他HarmonyOS组件和模块进行集成,为开发者提供了更多的灵活性和便利性。

 

LightWeightMap 

1. constructor

2. isEmpty

3. hasAll

4. hasKey

5. hasValue

6. get

7. set

8. remove

9. setAll

导入模块

import { LightWeightMap } from '@kit.ArkTS';

LightWeightMap

属性

名称类型可读可写说明
lengthnumberLightWeightMap的元素个数。

1. constructor

constructor()

LightWeightMap的构造函数。

使用发送:

let lightWeightMap: LightWeightMap<string, number> = new LightWeightMap();

 

2. isEmpty

isEmpty(): boolean

判断该LightWeightMap是否为空。

返回值:

类型说明
boolean为空返回true,不为空返回false。

使用方式:

const lightWeightMap: LightWeightMap<string, number> = new LightWeightMap();
let result = lightWeightMap.isEmpty();

3. hasAll

hasAll(map: LightWeightMap<K, V>): boolean

判断此LightWeightMap中是否含有该指定map中的所有元素。

参数:

参数名类型必填说明
mapLightWeightMap<K, V>比较对象。

返回值:

类型说明
boolean包含所有元素返回true,否则返回false。

使用方式:

let lightWeightMap: LightWeightMap<string, number> = new LightWeightMap();
lightWeightMap.set("squirrel", 123);
lightWeightMap.set("sparrow", 356);
let map: LightWeightMap<string, number> = new LightWeightMap();
map.set("sparrow", 356);
let result = lightWeightMap.hasAll(map);

4. hasKey

hasKey(key: K): boolean

判断此LightWeightMap中是否含有该指定key。

参数:

参数名类型必填说明
keyK指定key。

返回值:

类型说明
boolean包含指定key返回true,否则返回false。

使用方式: 

let lightWeightMap: LightWeightMap<string, number> = new LightWeightMap();
lightWeightMap.set("squirrel", 123);
let result = lightWeightMap.hasKey("squirrel");

5. hasValue

hasValue(value: V): boolean

判断此LightWeightMap中是否含有该指定value。

参数:

参数名类型必填说明
valueV指定元素。

返回值:

类型说明
boolean包含指定元素返回true,否则返回false。

使用方式: 

let lightWeightMap: LightWeightMap<string, number> = new LightWeightMap();
lightWeightMap.set("squirrel", 123);
let result = lightWeightMap.hasValue(123);

6. get

get(key: K): V

获取指定key所对应的value。

参数:

参数名类型必填说明
keyK指定key。

返回值:

类型说明
V返回key映射的value值。

使用方式: 

let lightWeightMap: LightWeightMap<string, number> = new LightWeightMap();
lightWeightMap.set("squirrel", 123);
lightWeightMap.set("sparrow", 356);
let result = lightWeightMap.get("sparrow");

7. set

set(key: K, value: V): Object

向LightWeightMap中添加或更新一组数据。

参数:

参数名类型必填说明
keyK添加成员数据的键名。
valueV添加成员数据的值。

返回值:

类型说明
Object返回添加数据后的lightWeightMap。

使用方式: 

let lightWeightMap: LightWeightMap<string, number> = new LightWeightMap();
let result = lightWeightMap.set("squirrel", 123);

8. remove

remove(key: K): V

删除并返回指定key映射的元素。

参数:

参数名类型必填说明
keyK指定key。

返回值:

类型说明
V返回删除元素的值。

使用方式: 

let lightWeightMap: LightWeightMap<string, number> = new LightWeightMap();
lightWeightMap.set("squirrel", 123);
lightWeightMap.set("sparrow", 356);
lightWeightMap.remove("sparrow");

9. setAll

setAll(map: LightWeightMap<K, V>): void

将一个LightWeightMap中的所有元素组添加到另一个lightWeightMap中。

参数:

参数名类型必填说明
mapLightWeightMap<K, V>被添加元素的lightWeightMap。

 使用方式: 

let lightWeightMap: LightWeightMap<string, number> = new LightWeightMap();
lightWeightMap.set("squirrel", 123);
lightWeightMap.set("sparrow", 356);
let map: LightWeightMap<string, number> = new LightWeightMap();
map.setAll(lightWeightMap); // 将lightWeightMap中所有的元素添加到map中

 如需要其他方法 请参考官方文档

制作不易 点个关注再走吧。°(°¯᷄◠¯᷅°)°。

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

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

相关文章

Docker的容器

目录 1. 什么是容器&#xff1f;2. 容器的生命周期2.1 容器处理OOM事件2.2 容器异常退出2.3 容器暂停 3. 容器命令详解3.1 容器命令清单3.2 docker create命令3.3 docker run命令3.4 docker ps命令3.5 docker logs命令3.6 docker attach命令3.7 docker exec命令3.8 docker stat…

《红队蓝队在网络安全对抗演练中的运作模式》

在网络安全领域&#xff0c;红队与蓝队的对抗性演练是一个复杂且系统的过程&#xff0c;主要包括以下阶段&#xff1a; 一、演练规划阶段 确定目标和范围 组织首先要明确演练的目的&#xff0c;例如测试新部署的网络安全防御系统的有效性、评估员工对网络安全威胁的应对能力或者…

LearnOpenGL学习(高级OpenGL -> 高级GLSL,几何着色器)

完整代码见&#xff1a;zaizai77/Cherno-OpenGL: OpenGL 小白学习之路 高级GLSL 内建变量 顶点着色器 gl_PointSoze : float 输出变量&#xff0c;用于控制渲染 GL_POINTS 型图元时&#xff0c;点的大小。可用于粒子系统。将其设置为 gl_Position.z 时&#xff0c;可以使点…

Excel/VBA 正则表达式归纳汇总

1.with结构。以下语句用来提取A列中的“成品”两个字前面的部分的中文&#xff0c;不含成品两个字&#xff0c;结果存放在第2列。使用了On Error Resume Next&#xff0c;表示错误时继续下一条。 Sub 提取口味() Set regx CreateObject("vbscript.regexp") On Err…

CodeMirror 如何动态更新definemode

CodeMirror 如何动态更新definemode 问题描述&#xff1a;解决方法&#xff1a; 问题描述&#xff1a; 项目中有一部分用到了CodeMirror组件&#xff0c;其高亮显示的内容需要根据最新的json动态的更新&#xff0c;需要使用definemode自定义高亮内容。 想要的效果如下&#xf…

深度与视差的关系及其转换

深度与视差的关系及其转换 在计算机视觉和立体视觉中&#xff0c;深度和视差是两个重要的概念。理解这两者之间的关系对于实现立体图像处理、三维重建以及深度估计至关重要。在这篇博客中&#xff0c;我们将深入探讨深度和视差的概念&#xff0c;并介绍它们之间的转换关系。 …

用户发送请求后服务端i/o工作过程

华子目录 服务端i/o介绍磁盘i/o机械磁盘的寻道时间、旋转延迟和数据传输时间常见的机械磁盘平均寻道时间值常见磁盘的平均延迟时间每秒最大IOPS的计算方法 网络i/o网络I/O处理过程磁盘和网络i/o 一次完整的请求在内部的执行过程 服务端i/o介绍 i/o在计算机中指Input/Output&am…

http的MIME类型

在 HTTP 协议中&#xff0c;MIME 类型&#xff08;Multipurpose Internet Mail Extensions&#xff09;用于描述传输内容的类型和格式。MIME 类型通过 Content-Type 头字段来指定&#xff0c;告知客户端如何处理和显示接收到的数据。 常见的 MIME 类型 以下是一些常见的 MIME…

智能人体安全防护:3D 视觉技术原理、系统架构与代码实现剖析

随着工业化程度的提高&#xff0c;生产安全已成为企业关注的重点。尤其是在一些存在禁区的工业厂区和车间&#xff0c;人员误入或违规进入将带来严重的安全隐患。为了解决这一问题&#xff0c;迈尔微视推出了智能人体安全检测解决方案&#xff0c;为企业提供全方位的人员安全监…

sqlalchemy异步方法使用

建立模型 创建基类base.py from sqlalchemy.orm import DeclarativeBaseclass Base(DeclarativeBase):pass以用户为例&#xff0c;建立用户模型继承基类 from sqlalchemy import Integer, String, ForeignKey, DateTime, Boolean from sqlalchemy.orm import mapped_column, Ma…

暂停window11自动更新

window11 的自动更新功能&#xff0c;一方面在后台占用资源&#xff0c;容易导致电脑卡顿&#xff1b;另一方面&#xff0c;“更新并关机” 和 “更新并重启” 的设置令人极其反感。很多补丁兼容性很差&#xff0c;更新后极易引发电脑蓝屏、闪屏等意想不到的 bug。 1.winR打开运…

CTF-WEB: php-Session 文件利用 [第一届国城杯 n0ob_un4er 赛后学习笔记]

step 1 搭建容器 教程 A5rZ 题目 github.com Dockerfile 有点问题,手动修复一下 FROM php:7.2-apacheCOPY ./flag /root COPY ./readflag / COPY ./html/ /var/www/html/ COPY ./php.ini /usr/local/etc/php/php.ini COPY ./readflag /readsecretRUN chmod 755 /var/www…

在Win11系统上安装Android Studio

诸神缄默不语-个人CSDN博文目录 下载地址&#xff1a;https://developer.android.google.cn/studio?hlzh-cn 官方安装教程&#xff1a;https://developer.android.google.cn/studio/install?hlzh-cn 点击Next&#xff0c;默认会同时安装Android Studio和Android虚拟机&#…

网络基础概念

目录 一、计算机网络的发展背景1、网络的定义&#xff08;1&#xff09; 独立模式&#xff08;2&#xff09;网络互联 2、局域网 LAN3、广域网 WAN4、比较局域网和广域网5、扩展 —— 域域网和互联网 二、初识协议1、协议的概念2、协议的本质3、协议分层&#xff08;1&#xff…

基于docker安装-高斯DB(opengauss)

获取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/opengauss:latest启动并配置容器 docker run --name OpenGauss --privilegedtrue --restartalways -u root -p 15432:5432 -e GS_PASSWORDEnmo123 -v /etc/localtime:/etc/localtime -v /data/OpenGaus…

web网页前后端交互方式

参考该文&#xff0c; 一、前端通过表单<form>向后端发送数据 前端是通过html中的<form>表单&#xff0c;设置method属性定义发送表单数据的方式是get还是post。 如使用get方式&#xff0c;则提交的数据会在url中显示&#xff1b;如使用post方式&#xff0c;提交…

Android:展锐T760平台camera PDAF调试

一、平台PDAF流程 目前展锐平台主要支持Shield PD Sensor、Dual PD Sensor 1、Shield PD Sensor Type1相位差和信心度结果直接从Sensor输出,不经过平台算法库。 Type2Sensor端抽取PD信息, 放在一块buffer输出, PDAF算法库算出相位差和信心度。 Type3Sensor端直接输出将带有…

css中样式前加 css样式前面加个圆点

创建CSS样式,样式名称的前面需要加什么 1、我们只知道符号代表的意思是at&#xff0c;其翻译是 在... 例如media就是 在媒介上。没人规定本身具有什么意义&#xff0c;或者说就算规定了我们也改变不了&#xff0c;只需要知道其规定属性的用法即可。 2、px;}然后根据你自己索要…

Scala-异常

1.空指针异常 NullPointerException 2.索引越界异常 IndexOutOfBoundsException 3.算术运算异常 ArithmeticException try{ 可能发生异常的代码 }catch { 发生异常之后的处理逻辑 case e:异常类型1 > 处理逻辑1 case e:异常类型2 > 处理逻辑2 …… }final…

iOS 环境搭建教程

本文档将详细介绍如何在 macOS 上搭建 iOS 开发环境&#xff0c;以便进行 React Native 开发。&#xff08;为了保证环境一致 全部在网络通畅的情况下运行&#xff09; 1. 安装 Homebrew Homebrew 是 macOS 的包管理工具&#xff0c;我们将通过它来安装开发所需的工具。 安装…