【HarmonyOS NEXT】鸿蒙线程安全容器集collections.Map

collections.Map

一种非线性数据结构。

文档中存在泛型的使用,涉及以下泛型标记符:

  • K:Key,键
  • V:Value,值

K和V类型都需为Sendable类型。

属性

元服务API:从API version 12 开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Utils.Lang

名称类型只读可选说明
sizenumberMap的元素个数。

constructor

constructor(entries?: readonly (readonly [K, V])[] | null)

构造函数,用于创建ArkTS Map对象。

元服务API:从API version 12 开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
entries[K, V][] | null键值对数组或其它可迭代对象。默认值为null,创建一个空Map对象。

错误码:

错误码ID错误信息
10200012The ArkTS Map's constructor cannot be directly invoked.

示例:


// 正例1:
const myMap = new collections.Map<number, number>();// 正例2:
const myMap = new collections.Map<number, string>([
[1, "one"],
[2, "two"],
[3, "three"],
]);// 反例:
@Sendable
class SharedClass {
constructor() {
}
}
let sObj = new SharedClass();
const myMap1: collections.Map<number, SharedClass> = new collections.Map<number, SharedClass>([[1, sObj]]);
// Type arguments of generic "Sendable" type must be a "Sendable" data type (arkts-sendable-generic-types)
let obj = new Object();
const myMap2: collections.Map<number, Object> = new collections.Map<number, Object>([[1, obj]]);

entries

entries(): IterableIterator<[K, V]>

返回一个Map迭代器对象,该对象包含了此Map中的每个元素的[key, value]对。

元服务API:从API version 12 开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
IterableIterator<[K, V]>返回一个Map迭代器对象。

错误码:

错误码ID错误信息
10200011The entries method cannot be bound with non-sendable.

示例:


// 例1:
const myMap = new collections.Map<number, string>([
[0, "foo"],
[1, "bar"]
]);const iterator = myMap.entries();
// Expected output: [0, "foo"]
console.info(iterator.next().value);
// Expected output: [1, "bar"]
console.info(iterator.next().value);// 例2:
const myMap: collections.Map<number, string> = new collections.Map<number, string>([
[0, "one"],
[1, "two"],
[2, "three"],
[3, "four"]
]);
const entriesIter: IterableIterator<[number, string]> = myMap.entries();
for (const entry of entriesIter) {
if (entry[1].startsWith('t')) {
myMap.delete(entry[0]);
}
}
// Expected output: 2
console.info("size:" + myMap.size);

keys

keys(): IterableIterator<K>

返回一个Map迭代器对象,该对象包含了此Map中每个元素的键。

元服务API:从API version 12 开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
IterableIterator<K>返回一个Map迭代器对象。

错误码:

错误码ID错误信息
10200011The keys method cannot be bound with non-sendable.

示例:

const myMap = new collections.Map<number, string>([
[0, "foo"],
[1, "bar"]
]);const iterator = myMap.keys();
// Expected output: 0
console.info(iterator.next().value);
// Expected output: 1
console.info(iterator.next().value);

values

values(): IterableIterator<V>

返回一个Map迭代器对象,该对象包含此Map中每个元素的值。

元服务API:从API version 12 开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
IterableIterator<V>返回一个Map迭代器对象。

错误码:

错误码ID错误信息
10200011The values method cannot be bound with non-sendable.

示例:


const myMap = new collections.Map<number, string>([
[0, "foo"],
[1, "bar"]
]);const iterator = myMap.values();
// Expected output: "foo"
console.info(iterator.next().value);
// Expected output: "bar"
console.info(iterator.next().value);

clear

clear(): void

删除该Map中的所有元素。

元服务API:从API version 12 开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Utils.Lang

错误码:

以下错误码的详细介绍请参见语言基础类库错误码。

错误码ID错误信息
10200011The clear method cannot be bound with non-sendable.
10200201Concurrent modification exception.

示例:


const myMap = new collections.Map<number, string>([
[0, "foo"],
[1, "bar"]
]);
// Expected output: 2
console.info("size:" + myMap.size);
myMap.clear();
// Expected output: 0
console.info("size:" + myMap.size);

delete

delete(key: K): boolean

删除该Map中指定元素。

元服务API:从API version 12 开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
keyK待删除元素的键。

返回值:

类型说明
boolean如果元素存在并已被删除,则为true;否则该元素不存在,返回false。

错误码:

错误码ID错误信息
10200011The delete method cannot be bound with non-sendable.
10200201Concurrent modification exception.

示例:


const myMap = new collections.Map<string, string>([
["hello", "world"],
]);
// Expected result: true
console.info("result:" + myMap.delete("hello"));
// Expected result: false
console.info("result:" + myMap.has("hello"));
// Expected result: false
console.info("result:" + myMap.delete("hello"));

forEach

forEach(callbackFn: (value: V, key: K, map: Map<K, V>) => void): void

按插入顺序对该Map中的每个键/值对执行一次回调函数。

元服务API:从API version 12 开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
callbackFn(value: V, key: K, map: Map<K, V>) => void回调函数。

callbackFn的参数说明:

参数名类型必填说明
valueV当前遍历到的元素键值对的值。
keyK当前遍历到的元素键值对的键。
mapMap<K, V>当前map实例对象。

错误码:

错误码ID错误信息
10200011The forEach method cannot be bound with non-sendable.
10200201Concurrent modification exception.

示例:


// 正例:
new collections.Map<string, number>([
['foo', 0],
['bar', 1],
['baz', 2],
]).forEach((value, key, map) => {
console.info(`m[${key}] = ${value}`);
});// 反例:
new collections.Map<string, number>([
['foo', 0],
['bar', 1],
['baz', 2],
]).forEach((value, key, map) => {
// Throw exception `Concurrent modification exception.`
map.delete(key);
});

get

get(key: K): V | undefined

返回该Map中的指定元素。

元服务API:从API version 12 开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Utils.Lang

参数:

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

返回值:

类型说明
V与指定键相关联的元素,如果键在Map对象中找不到,则返回undefined。

错误码:

错误码ID错误信息
10200011The get method cannot be bound with non-sendable.
10200201Concurrent modification exception.

示例:


const myMap = new collections.Map<string, string>([
["hello", "world"],
]);
// Expected output: "world"
console.info(myMap.get("hello"));
// Expected output: undefined
console.info(myMap.get("world"));

has

has(key: K): boolean

判断该Map中是否存在指定元素。

元服务API:从API version 12 开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
boolean如果存在指定元素,则返回true,否则返回false。

错误码:

错误码ID错误信息
10200011The has method cannot be bound with non-sendable.
10200201Concurrent modification exception.

示例:


const myMap = new collections.Map<string, string>([
["hello", "world"],
]);
// Expected output: true
console.info("result:" + myMap.has("hello"));
// Expected output: false
console.info("result:" + myMap.has("world"));

set

set(key: K, value: V): Map<K, V>

向该Map添加或更新一个指定的键值对。

元服务API:从API version 12 开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
Map<K, V>Map对象

错误码:

错误码ID错误信息
10200011The set method cannot be bound with non-sendable.
10200201Concurrent modification exception.

示例:


// 正例:
const myMap = new collections.Map<string, string>();
myMap.set("foo", "bar")// 反例:
let obj = new Object();
const myMap: collections.Map<string, Object> = new collections.Map<string, Object>();
// Type arguments of generic "Sendable" type must be a "Sendable" data type (arkts-sendable-generic-types)
myMap.set("foo", obj);

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

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

相关文章

Android 系统网络、时间服务器配置修改

1.修改wifi 是否可用的检测地址&#xff1a; 由于编译的源码用的是谷歌的检测url,国内访问不了&#xff0c;系统会认为wifi网络受限&#xff0c;所以改成国内的地址 adb shell settings delete global captive_portal_https_urladb shell settings delete global captive_por…

猫咪浮毛太多怎么处理?6年铲屎官最值得买的猫毛空气净化器分享

作为一位拥有6年铲屎经验的铲屎官&#xff0c;家中既有宝宝又有毛孩子的铲屎官家庭来说&#xff0c;空气中的宠物异味和猫毛不仅影响生活质量&#xff0c;更关乎家人的健康。普通空气净化器虽然能够提供基本的空气净化&#xff0c;但对于养猫家庭的特定需求&#xff0c;如去除宠…

捕获 IPython 的输出:深入探索 %%capture 命令的妙用

捕获 IPython 的输出&#xff1a;深入探索 %%capture 命令的妙用 在 IPython 的强大功能中&#xff0c;%%capture 魔术命令是一颗隐藏的宝石&#xff0c;它允许用户捕获执行单元格的输出&#xff0c;无论是打印的文本、错误信息还是生成的图像。这对于创建干净的报告、自动化文…

使用 YOLOv8 实现人体姿态检测

引言 在计算机视觉的各种应用中&#xff0c;人体姿态检测是一项极具挑战性的任务&#xff0c;它能够帮助我们理解人体各部位的空间位置。本文将详细介绍如何使用 YOLOv8 和 Python 实现一个人体姿态检测系统&#xff0c;涵盖模型加载、图像预处理、姿态预测到结果可视化的全流…

回头看,已过去6载

前言&#xff1a; 目前状态比较不好&#xff0c;家里催着结婚&#xff0c;自己年纪慢慢变大&#xff0c;感觉很焦虑&#xff0c;时常不经意间感觉嘴角都是向下的&#xff08;os&#xff1a;希望看到这段没有影响到你的心情&#xff0c;我只是想记录一下it这几年以及目前的状态…

k8s中控制器DaemonSet简介及用法

一、简介 在 Kubernetes 中&#xff0c;DaemonSet 是一种控制器类型&#xff0c;用于确保集群中的每个节点运行一个特定的 Pod 实例。通常情况下&#xff0c;DaemonSet 被用来在集群的每个节点上运行一个特定的系统服务或者应用程序副本&#xff0c;例如日志收集器&#xff08;…

《基于 Kafka + Flink + ES 实现危急值处理措施推荐和范围校准》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; 近期刚转战 CSDN&#xff0c;会严格把控文章质量&#xff0c;绝不滥竽充数&#xff0c;欢迎多多交流。&am…

爬虫-豆瓣读书排行榜

获取数据 requests库 获取数据环节需要用到requests库。安装方式也简单 pip install requests 爬取页面豆瓣读书 Top 250 用requests库来访问 import requests res requests.get(https://book.douban.com/top250/) 解析&#xff1a; 导入requests库调用了requests库中的…

2024年文化研究与数字媒体国际会议 (CRDM 2024)

2024年文化研究与数字媒体国际会议 (CRDM 2024) 2024 International Conference on Cultural Research and Digital Media 【重要信息】 大会地点&#xff1a;珠海 大会官网&#xff1a;http://www.iccrdm.com 投稿邮箱&#xff1a;iccrdmsub-conf.com 【注意&#xff1a;稿将…

程序员必知的 89 个操作系统核心概念

1. 操作系统&#xff08;Operating System&#xff0c;OS&#xff09;&#xff1a;是管理计算机硬件与软件资源的系统软件&#xff0c;同时也是计算机系统的内核与基石。操作系统需要处理管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系…

开放式耳机的哪些品牌比较好?开放式耳机爆款2024机型强烈推荐

现在耳机越来越难挑&#xff0c;一是市场上的品牌越来越多&#xff0c;网红品牌&#xff0c;专业的品牌可选择性太多了&#xff0c;但是质量什么的就没有办法保证了&#xff0c;所以作为耳机测评师&#xff0c;为了让大家能够挑选到适合自己的那一款开放式耳机&#xff0c;我写…

Java-SpringBoot启动报端口被占用,如何找到占用端口的进程并杀掉

背景 当我们本地启动多个项目&#xff0c;可能会出现端口被占用的情况&#xff0c;当然有时候可能idea窗口关闭&#xff0c;但是进程并没有kill掉&#xff0c;导致再次启动项目时也会报端口被占用的错误。 通常的做法是打开任务管理器&#xff0c;然后kill掉对应的进程。 首先…

位置编码的具体计算方式(公式解释)

公式 (10.6.2) 描述了位置编码的具体计算方式&#xff0c;这种位置编码基于正弦和余弦函数&#xff0c;用于在自注意力机制中引入位置信息。下面我们详细解释公式和代码。 公式 (10.6.2) 公式 (10.6.2) 的目的是为输入序列中的每个词元添加一个位置编码&#xff0c;以保留序列…

PROSOFT/普罗索夫特 PROSOFT MVI56-PDPMV1模块 控制器 处理器

PROSOFT MVI56-PDPMV1是一款功能丰富的工业自动化通信模块&#xff0c;其参数、规格、尺寸、重量、系列、特征和作用如下&#xff1a; 参数与规格&#xff1a; 功能&#xff1a;作为PROSOFT MVI56-PDPMV1网络扫描仪&#xff0c;在PROSOFT MVI56-PDPMV1设备和处理器数据之间传输…

MOE技术简要记录

MOE GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding 模型设计&#xff1a; 特点: (1) 专家容量 expert capacity 强制规定了每一个expert所负责处理的token数量有一个最大值&#xff0c;这个最大值就叫专家容量&#xff1b;&#xff08;…

RK3588 linux RGA初探

概述 RGA (Raster Graphic Acceleration Unit)是一个独立的2D硬件加速器&#xff0c;可用于加速点/线绘制&#xff0c;执行图像缩放、旋转、bitBlt、alpha混合等常见的2D图形操作。 本文基于以下版本编写: commit fb5f019ea0191ec1c34f49ac8be447ac8921aadd (HEAD -> main,…

服务器数据恢复—raid5阵列硬盘出现大量坏道的数据恢复案例

服务器存储数据恢复环境&故障&#xff1a; 一台DELL EqualLogic PS 4000存储中有一组由12块磁盘组建的raid5阵列&#xff0c;存储空间划分3个同等大小的卷&#xff0c;采用的VMFS文件系统。 两块硬盘指示灯亮黄色&#xff0c;raid5阵列崩溃&#xff0c;存储变得不可用。 服…

C语言学习记录Day2

for循环 for&#xff08;表达式1&#xff1b;表达式2&#xff1b;表达式3&#xff09; 循环语句&#xff1b; 注&#xff1a;表达式1&#xff1a;初始化部分.表达式2&#xff1a;条件判断部分 表达式3&#xff1a;调整部分 不可再for循环体内修改循环变量&#xff0c;防止f…

厂拉拉获清科文创天使轮投资

最新信息&#xff1a;源头工厂测品平台厂拉拉APP已正式获得北京清科文创千万级的天使轮投资。 本轮资金将主要用于测品师、品鉴官队伍的引流&#xff0c;及APP3.0数字供应链和用户购物行为算法技术、算力模型的建设。 厂拉拉APP的营运主体为广州智邦远见科技有限公司&#xf…

Java基础概念

1.注释和关键字 &#xff08;1&#xff09;注释 什么是注释&#xff1f;注释就是对代码进行解释说明的文字 注释的分类&#xff1f;单行注释&#xff0c;多行注释&#xff0c;文档注释 注释的使用细节&#xff1f; 注释的内容不会参与编译和运行&#xff0c;仅仅是对代码的…