js-apis-hashmap.md 8.1 KB
Newer Older
L
linhaoran 已提交
1 2 3 4 5 6 7 8 9
# 非线性容器HashMap 

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。


## 导入模块

```
10
import HashMap from '@ohos.util.HashMap'  
L
linhaoran 已提交
11 12
```

Z
zengyawen 已提交
13
## 系统能力
L
linhaoran 已提交
14

Z
zengyawen 已提交
15
SystemCapability.Utils.Lang
L
linhaoran 已提交
16 17 18 19 20 21 22 23

## HashMap


### 属性

| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
24
| length | number | 是 | 否 | HashMap的元素个数。 |
L
linhaoran 已提交
25 26 27 28


### constructor

Z
zengyawen 已提交
29
constructor()
L
linhaoran 已提交
30 31 32

HashMap的构造函数。

Z
zengyawen 已提交
33 34 35 36 37
**示例:**

```
let hashMap = new HashMap();
```
L
linhaoran 已提交
38 39 40 41


### isEmpty

Z
zengyawen 已提交
42
isEmpty(): boolean
L
linhaoran 已提交
43 44 45

判断该HashMap是否为空。

Z
zengyawen 已提交
46
**返回值:**
L
linhaoran 已提交
47

Z
zengyawen 已提交
48 49 50 51 52 53 54 55 56 57
| 类型 | 说明 |
| -------- | -------- |
| boolean | 为空返回true,不为空返回false。 |

**示例:**

```
const hashMap = new HashMap();
hashMap.isEmpty();
```
L
linhaoran 已提交
58 59 60 61


### hasKey

Z
zengyawen 已提交
62
hasKey(key: K): boolean
L
linhaoran 已提交
63 64 65

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

Z
zengyawen 已提交
66 67 68 69 70
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| key | K | 是 | 指定Key。 |
L
linhaoran 已提交
71

Z
zengyawen 已提交
72
**返回值:**
L
linhaoran 已提交
73

Z
zengyawen 已提交
74 75 76 77 78 79 80 81 82 83 84 85
| 类型 | 说明 |
| -------- | -------- |
| boolean | 包含指定Key返回true,否则返回false。 |

**示例:**

```
let hashMap = new HashMap();
hashMap.hasKey("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123);
hashMap.hasKey("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
```
L
linhaoran 已提交
86 87 88 89


### hasValue

Z
zengyawen 已提交
90
hasValue(value: V): boolean
L
linhaoran 已提交
91 92 93

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

Z
zengyawen 已提交
94 95 96 97 98
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| value | V | 是 | 指定value。 |
L
linhaoran 已提交
99

Z
zengyawen 已提交
100
**返回值:**
L
linhaoran 已提交
101

Z
zengyawen 已提交
102 103 104 105 106 107 108 109 110 111 112 113
| 类型 | 说明 |
| -------- | -------- |
| boolean | 包含指定value返回true,否则返回false。 |

**示例:**

```
let hashMap = new HashMap();
hashMap.hasValue(123);
hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123);
hashMap.hasValue(123);
```
L
linhaoran 已提交
114 115 116 117


### get

Z
zengyawen 已提交
118
get(key: K): V
L
linhaoran 已提交
119 120 121

获取指定key所对应的value。

Z
zengyawen 已提交
122
**参数:**
L
linhaoran 已提交
123

Z
zengyawen 已提交
124 125 126
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| key | K | 是 | 查找的指定key。 |
L
linhaoran 已提交
127

Z
zengyawen 已提交
128 129 130 131 132 133 134 135 136 137 138 139 140 141
**返回值:**

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

**示例:**

```
let hashMap = new HashMap();
hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123);
hashMap.set("sdfs", 356);
hashMap.get("sdfs");
```
L
linhaoran 已提交
142 143 144 145


### setAll

Z
zengyawen 已提交
146
setAll(map: HashMap<K, V>): void
L
linhaoran 已提交
147 148 149

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

Z
zengyawen 已提交
150
**参数:**
L
linhaoran 已提交
151

Z
zengyawen 已提交
152 153 154 155 156 157 158 159 160 161 162 163 164
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| map | HashMap<K, V> | 是 | 被添加元素的hashmap。 |

**示例:**

```
let hashMap = new HashMap();
hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123);
hashMap.set("sdfs", 356);
let newHashMap = new HashMap();
hashMap.setAll(newHashMap);
```
L
linhaoran 已提交
165 166 167 168


### set

Z
zengyawen 已提交
169
set(key: K, value: V): Object
L
linhaoran 已提交
170 171 172

向HashMap中添加一组数据。

Z
zengyawen 已提交
173
**参数:**
L
linhaoran 已提交
174

Z
zengyawen 已提交
175 176 177 178
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| key | K | 是 | 添加成员数据的键名。 |
| value | V | 是 | 添加成员数据的值。 |
L
linhaoran 已提交
179

Z
zengyawen 已提交
180 181 182 183 184 185 186 187 188 189 190 191
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| Object | 返回添加后的hashmap。 |

**示例:**

```
let hashMap = new HashMap();
hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123);
```
L
linhaoran 已提交
192 193 194 195


### remove

Z
zengyawen 已提交
196
remove(key: K): V
L
linhaoran 已提交
197 198 199

删除指定的元素。

Z
zengyawen 已提交
200 201 202 203 204
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| key | K | 是 | 依据key指定删除的元素。 |
L
linhaoran 已提交
205

Z
zengyawen 已提交
206
**返回值:**
L
linhaoran 已提交
207

Z
zengyawen 已提交
208 209 210 211 212 213 214 215 216 217 218 219
| 类型 | 说明 |
| -------- | -------- |
| V | 返回删除元素的值。 |

**示例:**

```
let hashMap = new HashMap();
hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123);
hashMap.set("sdfs", 356);
hashMap.remove("sdfs");
```
L
linhaoran 已提交
220 221 222 223


### clear

Z
zengyawen 已提交
224
clear(): void
L
linhaoran 已提交
225 226 227

清除HashMap中的所有元素,并把length置为0。

Z
zengyawen 已提交
228 229 230 231 232 233 234 235
**示例:**

```
let hashMap = new HashMap();
hashMap.set("Ahfbrgrbgnutfodgorrogorgrogofdfdf", 123);
hashMap.set("sdfs", 356);
hashMap.clear();
```
L
linhaoran 已提交
236 237 238 239


### keys

Z
zengyawen 已提交
240
keys(): IterableIterator&lt;K&gt;
L
linhaoran 已提交
241 242 243

返回包含此映射中包含的键的新迭代器对象。

Z
zengyawen 已提交
244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| IterableIterator&lt;K&gt; | 返回一个迭代器。 |

**示例:**

```
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(temp);
  temp = iter.next().value;
}
```
L
linhaoran 已提交
263 264 265 266


### values

Z
zengyawen 已提交
267
values(): IterableIterator&lt;V&gt;
L
linhaoran 已提交
268 269 270

返回包含此映射中包含的键的新迭代器对象。

Z
zengyawen 已提交
271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| IterableIterator&lt;V&gt; | 返回一个迭代器。 |

**示例:**

```
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(temp);
  temp = iter.next().value;
}
```
L
linhaoran 已提交
290 291 292 293


### replace

Z
zengyawen 已提交
294
replace(key: K, value: V): boolean
L
linhaoran 已提交
295 296 297

对HashMap中一组数据进行更新(替换)。

Z
zengyawen 已提交
298 299 300 301 302 303 304 305
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| key | K | 是 | 依据key指定替换的元素。 |
| value | V | 是 | 添加成员数据的值。 |

**返回值:**
L
linhaoran 已提交
306

Z
zengyawen 已提交
307 308 309
| 类型 | 说明 |
| -------- | -------- |
| boolean | 是否成功对已有数据进行替换 |
L
linhaoran 已提交
310

Z
zengyawen 已提交
311 312 313 314 315 316 317
**示例:**

```
let hashMap = new HashMap();
hashMap.set("sdfs", 123);
hashMap.replace("sdfs", 357);
```
L
linhaoran 已提交
318 319 320 321


### forEach

Z
zengyawen 已提交
322
forEach(callbackfn: (value: V, key?: K, hashMap?: HashMap<K, V>) => void, thisArg?: Object): void
L
linhaoran 已提交
323 324 325

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

Z
zengyawen 已提交
326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| callbackfn | function | 是 | 回调函数。 |
| thisArg | Object | 否 | callbackfn被调用时用作this值。 |

callbackfn的参数说明:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| value | V | 是 | 当前遍历到的元素键值对的值。 |
| key | K | 是 | 当前遍历到的元素键值对的键。 |
| hashMap | HashMap<K, V> | 否 | 当前调用forEach方法的实例对象。 |

**示例:**

```
let hashMap = new HashMap();
hashMap.set("sdfs", 123);
hashMap.set("dfsghsf", 357);
hashMap.forEach((value, key) => {
  console.log(value, key);
});
```
L
linhaoran 已提交
350 351 352 353


### entries

Z
zengyawen 已提交
354
entries(): IterableIterator<[K, V]>
L
linhaoran 已提交
355 356 357

返回包含此映射中包含的键的新迭代器对象。

Z
zengyawen 已提交
358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| 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(temp[0]);
  console.log(temp[1]);
  temp = iter.next().value;
}
```
L
linhaoran 已提交
378 379 380 381


### [Symbol.iterator]

Z
zengyawen 已提交
382
[Symbol.iterator]\(): IterableIterator&lt;[K, V]&gt;
L
linhaoran 已提交
383 384 385

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

Z
zengyawen 已提交
386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| 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(temp[0]);
  console.log(temp[1]);
  temp = iter.next().value;
}
```