HarmonyOS 非线性容器HashMap 的好处
快速查找:
- HashMap基于哈希表实现,通过key的哈希值确定存储位置,从而实现了快速的键值对查找。
- 这种基于哈希的查找方式使得HashMap在平均情况下具有O(1)的时间复杂度,即查找速度与集合大小无关,因此非常适合处理大规模数据集。
唯一键约束:
- HashMap要求存储的键值对中key是唯一的,每个key只能对应一个value。
- 这种约束保证了数据的唯一性和一致性,避免了数据重复的问题。
动态扩容:
- HashMap具有动态扩容的能力,当元素数量超过当前容量时,会自动进行扩容操作。
- 扩容操作通常涉及创建一个更大的数组,并将现有元素重新哈希并存储到新数组中。这种机制保证了HashMap在存储大量数据时仍能保持良好的性能。
灵活的数据类型:
- HashMap支持泛型定义,允许用户根据需要指定key和value的类型。
- 这种灵活性使得HashMap可以存储各种类型的数据,如字符串、数字、对象等,满足了不同应用场景的需求。
丰富的API支持:
- HarmonyOS为HashMap提供了丰富的API,包括添加、删除、查找、更新等操作。
- 这些API使得用户可以方便地操作HashMap中的数据,提高了开发效率和代码的可读性。
HashMap底层使用数组+链表+红黑树的方式实现,查询、插入和删除的效率都很高。HashMap存储内容基于key-value的键值对映射,不能有重复的key,且一个key只能对应一个value。
HashMap和TreeMap相比,HashMap依据键的hashCode存取数据,访问速度较快。而TreeMap是有序存取,效率较低。
HashSet基于HashMap实现。HashMap的输入参数由key、value两个值组成。在HashSet中,只对value对象进行处理。
推荐使用场景: 需要快速存取、删除以及插入键值对数据时,推荐使用HashMap。
导入模块
import { HashMap } from '@kit.ArkTS';
HashMap
1. constructor
2. isEmpty
3. hasKey
4. hasValue
HashMap
属性
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
length | number | 是 | 否 | HashMap的元素个数。 |
1. constructor
constructor()
HashMap的构造函数。
使用方式:
let hashMap: HashMap<string, number> = new HashMap();
2. isEmpty
isEmpty(): boolean
判断该HashMap是否为空。
返回值:
类型 | 说明 |
---|---|
boolean | 为空返回true,不为空返回false。 |
使用方式:
const hashMap: HashMap<string, number> = new HashMap();
let result = hashMap.isEmpty();
3. hasKey
hasKey(key: K): boolean
判断此HashMap中是否含有该指定key。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
key | K | 是 | 指定Key。 |
返回值:
类型 | 说明 |
---|---|
boolean | 包含指定Key返回true,否则返回false。 |
使用方式:
const hashMap: HashMap<string, number> = new HashMap();
hashMap.set("squirrel", 123);
let result = hashMap.hasKey("squirrel");
4. hasValue
hasValue(value: V): boolean
判断此HashMap中是否含有该指定value。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
value | V | 是 | 指定value。 |
返回值:
类型 | 说明 |
---|---|
boolean | 包含指定value返回true,否则返回false。 |
使用方式:
const hashMap: HashMap<string, number> = new HashMap();
hashMap.set("squirrel", 123);
let result = hashMap.hasValue(123);
如需要其他方法 请参考官方文档
制作不易 点个关注再走吧。°(°¯᷄◠¯᷅°)°。