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

鸿蒙语言基础类库:【@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

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

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

参数:

参数名类型必填说明
keyK指定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

参数:

参数名类型必填说明
valueV指定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

参数:

参数名类型必填说明
keyK查找的指定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<K, V>): void

将一个HashMap中的所有元素组添加到另一个hashMap中。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
mapHashMap<K, V>被添加元素的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

参数:

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

返回值:

类型说明
Object返回添加后的hashMap。

示例:

let hashMap = new HashMap();
let result = hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123);

remove

remove(key: K): V

删除指定key所对应元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
keyK指定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

参数:

参数名类型必填说明
keyK依据key指定替换的元素。
newValueV替换成员数据的值。

返回值:

类型说明
boolean是否成功对已有数据进行替换

示例:

let hashMap = new HashMap();
hashMap.set("sdfs", 123);
let result = hashMap.replace("sdfs", 357);

forEach

forEach(callbackfn: (value?: V, key?: K, map?: HashMap<K, V>) => void, thisArg?: Object): void

通过回调函数来遍历HashMap实例对象上的元素以及元素对应的下标。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
callbackfnfunction回调函数。
thisArgObjectcallbackfn被调用时用作this值。

callbackfn的参数说明:

参数名类型必填说明
valueV当前遍历到的元素键值对的值。
keyK当前遍历到的元素键值对的键。
mapHashMap<K, V>当前调用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

返回值:

在这里插入图片描述

类型说明
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;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • mes系统在新材料行业中的应用价值
  • 谷粒商城-个人笔记(集群部署篇三)
  • 定义变量和声明变量、定义类和声明类
  • 哈喽GPT-4o,程序员如何通过GPT-4o提高办公效率
  • Score matching
  • [终端安全]-7 后量子密码算法
  • 力扣-排序算法
  • uniapp js 用dom创建form表单 并提交
  • 【机器学习】主成分分析(PCA):数据降维的艺术
  • C语言 | Leetcode C语言题解之第226题翻转二叉树
  • DP学习——观察者模式
  • 代码随想录算法训练营day76 | Floyd 算法精讲、A * 算法精讲
  • STM32 - PWR 笔记
  • 【国产开源可视化引擎Meta2d.js】鹰眼地图
  • 算法小练之 位运算基础
  • 2019.2.20 c++ 知识梳理
  • CEF与代理
  • ESLint简单操作
  • vue-cli在webpack的配置文件探究
  • 前端性能优化--懒加载和预加载
  • 前端学习笔记之观察者模式
  • 如何设计一个微型分布式架构?
  • 入口文件开始,分析Vue源码实现
  • 怎么将电脑中的声音录制成WAV格式
  • 智能合约开发环境搭建及Hello World合约
  • elasticsearch-head插件安装
  • 阿里云ACE认证之理解CDN技术
  • 阿里云重庆大学大数据训练营落地分享
  • 组复制官方翻译九、Group Replication Technical Details
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​低代码平台的核心价值与优势
  • #每天一道面试题# 什么是MySQL的回表查询
  • $.ajax中的eval及dataType
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (补充)IDEA项目结构
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (动态规划)5. 最长回文子串 java解决
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (七)c52学习之旅-中断
  • (三)docker:Dockerfile构建容器运行jar包
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)visual stdio 书签功能介绍
  • (转)程序员技术练级攻略
  • . Flume面试题
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • [20160807][系统设计的三次迭代]
  • [Angular] 笔记 18:Angular Router
  • [C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改