鸿蒙语言基础类库:【@ohos.util.HashMap (非线性容器HashMap)】

非线性容器HashMap

说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。

HashMap底层使用数组+链表+红黑树的方式实现,查询、插入和删除的效率都很高。HashMap存储内容基于key-value的键值对映射,不能有重复的key,且一个key只能对应一个value。

HashMap和[TreeMap]相比,HashMap依据键的hashCode存取数据,访问速度较快。而TreeMap是有序存取,效率较低。

HashSet\]基于HashMap实现。HashMap的输入参数由key、value两个值组成。在HashSet中,只对value对象进行处理。 **推荐使用场景:** 需要快速存取、删除以及插入键值对数据时,推荐使用HashMap。 ### 导入模块 import HashMap from '@ohos.util.HashMap'; ### HashMap #### 属性 **系统能力:** SystemCapability.Utils.Lang | 名称 | 参数类型 | 可读 | 可写 | 说明 | |--------|--------|----|----|---------------| | length | number | 是 | 否 | HashMap的元素个数。 | #### constructor constructor() HashMap的构造函数。 **系统能力:** SystemCapability.Utils.Lang **示例:** let hashMap = new HashMap(); #### isEmpty isEmpty(): boolean 判断该HashMap是否为空。 **系统能力:** SystemCapability.Utils.Lang **返回值:** | 类型 | 说明 | |---------|----------------------| | boolean | 为空返回true,不为空返回false。 | **示例:** const hashMap = new HashMap(); let result = hashMap.isEmpty(); #### )hasKey hasKey(key: K): boolean 判断此HashMap中是否含有该指定key。 **系统能力:** SystemCapability.Utils.Lang **参数:** | 参数名 | 类型 | 必填 | 说明 | |-----|----|----|--------| | key | K | 是 | 指定Key。 | **返回值:** | 类型 | 说明 | |---------|--------------------------| | boolean | 包含指定Key返回true,否则返回false。 | **示例:** let hashMap = new HashMap(); let result = hashMap.hasKey("Ahfbrgrbgnutfodgorrogorgrogofdfdf"); hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123); let result1 = hashMap.hasKey("Ahfbrgrbgnutfodgorrogorgrogofdfdf"); #### hasValue hasValue(value: V): boolean 判断此HashMap中是否含有该指定value。 **系统能力:** SystemCapability.Utils.Lang **参数:** | 参数名 | 类型 | 必填 | 说明 | |-------|----|----|----------| | value | V | 是 | 指定value。 | **返回值:** | 类型 | 说明 | |---------|----------------------------| | boolean | 包含指定value返回true,否则返回false。 | **示例:** let hashMap = new HashMap(); let result = hashMap.hasValue(123); hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123); let result1 = hashMap.hasValue(123); #### get get(key: K): V 获取指定key所对应的value。 **系统能力:** SystemCapability.Utils.Lang **参数:** | 参数名 | 类型 | 必填 | 说明 | |-----|----|----|-----------| | key | K | 是 | 查找的指定key。 | **返回值:** | 类型 | 说明 | |----|-----------------| | V | 返回key映射的value值。 | **示例:** let hashMap = new HashMap(); hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123); hashMap.set("sdfs", 356); let result = hashMap.get("sdfs"); #### setAll setAll(map: HashMap\): void 将一个HashMap中的所有元素组添加到另一个hashMap中。 **系统能力:** SystemCapability.Utils.Lang **参数:** | 参数名 | 类型 | 必填 | 说明 | |-----|-----------------|----|----------------| | map | HashMap\ | 是 | 被添加元素的hashMap。 | **示例:** let hashMap = new HashMap(); hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123); hashMap.set("sdfs", 356); let newHashMap = new HashMap(); hashMap.setAll(newHashMap); #### set set(key: K, value: V): Object 向HashMap中添加一组数据。 **系统能力:** SystemCapability.Utils.Lang **参数:** | 参数名 | 类型 | 必填 | 说明 | |-------|----|----|------------| | key | K | 是 | 添加成员数据的键名。 | | value | V | 是 | 添加成员数据的值。 | **返回值:** | 类型 | 说明 | |--------|----------------| | Object | 返回添加后的hashMap。 | **示例:** let hashMap = new HashMap(); let result = hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123); #### remove remove(key: K): V 删除指定key所对应元素。 **系统能力:** SystemCapability.Utils.Lang **参数:** | 参数名 | 类型 | 必填 | 说明 | |-----|----|----|--------| | key | K | 是 | 指定key。 | **返回值:** | 类型 | 说明 | |----|-----------| | V | 返回删除元素的值。 | **示例:** let hashMap = new HashMap(); hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123); hashMap.set("sdfs", 356); let result = hashMap.remove("sdfs"); #### clear clear(): void 清除HashMap中的所有元素,并把length置为0。 **系统能力:** SystemCapability.Utils.Lang **示例:** let hashMap = new HashMap(); hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123); hashMap.set("sdfs", 356); hashMap.clear(); #### keys keys(): IterableIterator 返回包含此映射中包含的键名的新迭代器对象。 **系统能力:** SystemCapability.Utils.Lang **返回值:** | 类型 | 说明 | |------------------|----------| | IterableIterator | 返回一个迭代器。 | **示例:** let hashMap = new HashMap(); hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123); hashMap.set("sdfs", 356); let iter = hashMap.keys(); let temp = iter.next().value; while(temp != undefined) { console.log("value:" + temp); temp = iter.next().value; } #### values values(): IterableIterator 返回包含此映射中包含的键值的新迭代器对象。 **系统能力:** SystemCapability.Utils.Lang **返回值:** | 类型 | 说明 | |------------------|----------| | IterableIterator | 返回一个迭代器。 | **示例:** let hashMap = new HashMap(); hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123); hashMap.set("sdfs", 356); let iter = hashMap.values(); let temp = iter.next().value; while(temp != undefined) { console.log("value:" + temp); temp = iter.next().value; } #### replace replace(key: K, newValue: V): boolean 对HashMap中一组数据进行更新(替换)。 **系统能力:** SystemCapability.Utils.Lang **参数:** | 参数名 | 类型 | 必填 | 说明 | |----------|----|----|---------------| | key | K | 是 | 依据key指定替换的元素。 | | newValue | V | 是 | 替换成员数据的值。 | **返回值:** | 类型 | 说明 | |---------|---------------| | boolean | 是否成功对已有数据进行替换 | **示例:** let hashMap = new HashMap(); hashMap.set("sdfs", 123); let result = hashMap.replace("sdfs", 357); #### forEach forEach(callbackfn: (value?: V, key?: K, map?: HashMap\) =\> void, thisArg?: Object): void 通过回调函数来遍历HashMap实例对象上的元素以及元素对应的下标。 **系统能力:** SystemCapability.Utils.Lang **参数:** | 参数名 | 类型 | 必填 | 说明 | |------------|----------|----|------------------------| | callbackfn | function | 是 | 回调函数。 | | thisArg | Object | 否 | callbackfn被调用时用作this值。 | callbackfn的参数说明: | 参数名 | 类型 | 必填 | 说明 | |-------|-----------------|----|---------------------| | value | V | 否 | 当前遍历到的元素键值对的值。 | | key | K | 否 | 当前遍历到的元素键值对的键。 | | map | HashMap\ | 否 | 当前调用forEach方法的实例对象。 | **示例:** let hashMap = new HashMap(); hashMap.set("sdfs", 123); hashMap.set("dfsghsf", 357); hashMap.forEach((value, key) => { console.log("value:" + value, key); }); #### entries entries(): IterableIterator\<\[K, V\]\> 返回包含此映射中包含的键值对的新迭代器对象。 **系统能力:** SystemCapability.Utils.Lang **返回值:** ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/86c38a345b0543079ddab9587bd1f5bc.png) | 类型 | 说明 | |------------------------------|----------| | IterableIterator\<\[K, V\]\> | 返回一个迭代器。 | **示例:** let hashMap = new HashMap(); hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123); hashMap.set("sdfs", 356); let iter = hashMap.entries(); let temp = iter.next().value; while(temp != undefined) { console.log("key:" + temp[0]); console.log("value:" + temp[1]); temp = iter.next().value; } #### \[Symbol.iterator

Symbol.iterator: IterableIterator<[K, V]>

返回一个迭代器,迭代器的每一项都是一个 JavaScript 对象,并返回该对象。

系统能力: SystemCapability.Utils.Lang

返回值:

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

示例:

复制代码
let hashMap = new HashMap();
hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123);
hashMap.set("sdfs", 356);

// 使用方法一:
for (let item of hashMap) { 
  console.log("key:" + item[0]);
  console.log("value:" + item[1]);
}

// 使用方法二:
let iter = hashMap[Symbol.iterator]();
let temp = iter.next().value;
while(temp != undefined) {
  console.log("key:" + temp[0]);
  console.log("value:" + temp[1]);
  temp = iter.next().value;
}
相关推荐
KirkLin5 小时前
Kirk:练习时长两年半的AI Coding经验
人工智能·程序员·全栈
挽淚5 小时前
(小白向)什么是Prompt,RAG,Agent,Function Calling和MCP ?
人工智能·程序员
whysqwhw5 小时前
鸿蒙分布式投屏
harmonyos
whysqwhw6 小时前
鸿蒙AVSession Kit
harmonyos
whysqwhw8 小时前
鸿蒙各种生命周期
harmonyos
whysqwhw9 小时前
鸿蒙音频编码
harmonyos
whysqwhw9 小时前
鸿蒙音频解码
harmonyos
whysqwhw9 小时前
鸿蒙视频解码
harmonyos
whysqwhw9 小时前
鸿蒙视频编码
harmonyos
ajassi20009 小时前
开源 Arkts 鸿蒙应用 开发(十八)通讯--Ble低功耗蓝牙服务器
华为·开源·harmonyos