js-apis-lightweightset.md 16.3 KB
Newer Older
1
# @ohos.util.LightWeightSet (非线性容器LightWeightSet)  
L
linhaoran 已提交
2 3 4 5

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

6 7 8 9 10 11 12 13 14
LightWeightSet可用于存储一系列值的集合,存储元素中value值唯一。

LightWeightSet依据泛型定义,采用轻量级结构,初始默认容量大小为8,每次扩容大小为原始容量的两倍。

集合中value值的查找依赖于hash算法,通过一个数组存储hash值,然后映射到其他数组中的value值。

LightWeightSet和[HashSet](js-apis-hashset.md)都是用来存储键值的集合,LightWeightSet的占用内存更小。

**推荐使用场景:** 当需要存取某个集合或是对某个集合去重时,推荐使用占用内存更小的LightWeightSet。
L
linhaoran 已提交
15

L
lengchangjing 已提交
16 17 18
文档中存在泛型的使用,涉及以下泛型标记符:<br>
- T: Type, 类

L
linhaoran 已提交
19 20
## 导入模块

21
```ts
22
import LightWeightSet from '@ohos.util.LightWeightSet';  
L
linhaoran 已提交
23 24 25 26 27 28
```

## LightWeightSet

### 属性

Z
zengyawen 已提交
29 30
**系统能力:** SystemCapability.Utils.Lang

L
liu-ganlin 已提交
31
| 名称 | 类型 | 可读 | 可写 | 说明 |
L
linhaoran 已提交
32
| -------- | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
33
| length | number | 是 | 否 | LightWeightSet的元素个数。 |
L
linhaoran 已提交
34 35 36 37


### constructor

Z
zengyawen 已提交
38
constructor()
L
linhaoran 已提交
39 40 41

LightWeightSet的构造函数。

Z
zengyawen 已提交
42 43
**系统能力:** SystemCapability.Utils.Lang

L
liu-ganlin 已提交
44 45 46 47
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
48
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
49 50 51
| -------- | -------- |
| 10200012 | The LightWeightSet's constructor cannot be directly invoked. |

Z
zengyawen 已提交
52 53
**示例:**

54
```ts
Z
zengyawen 已提交
55 56
let lightWeightSet = new LightWeightSet();
```
L
linhaoran 已提交
57 58 59 60


### isEmpty

Z
zengyawen 已提交
61
isEmpty(): boolean
L
linhaoran 已提交
62 63 64

判断该容器是否为空。

Z
zengyawen 已提交
65 66
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
67 68 69 70 71
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| boolean | 为空返回true,不为空返回false。 |
L
linhaoran 已提交
72

L
liu-ganlin 已提交
73 74 75 76
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
77
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
78 79 80
| -------- | -------- |
| 10200011 | The isEmpty method cannot be bound. |

Z
zengyawen 已提交
81 82
**示例:**

83
```ts
Z
zengyawen 已提交
84
const lightWeightSet = new LightWeightSet();
85
let result = lightWeightSet.isEmpty();
Z
zengyawen 已提交
86
```
L
linhaoran 已提交
87 88 89

### add

90
add(obj: T): boolean
L
linhaoran 已提交
91 92 93

向此容器中添加数据。

Z
zengyawen 已提交
94 95
**系统能力:** SystemCapability.Utils.Lang

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

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
100
| obj | T | 是 | 添加的成员数据。 |
Z
zengyawen 已提交
101 102 103 104 105 106

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| boolean | 成功添加元素返回true,否则返回false。 |
L
linhaoran 已提交
107

L
liu-ganlin 已提交
108 109 110 111
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
112
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
113 114 115
| -------- | -------- |
| 10200011 | The add method cannot be bound. |

Z
zengyawen 已提交
116
**示例:**
L
linhaoran 已提交
117

118
```ts
Z
zengyawen 已提交
119
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
120
let result = lightWeightSet.add("squirrel");
Z
zengyawen 已提交
121
```
L
linhaoran 已提交
122 123 124 125


### addAll

Z
zengyawen 已提交
126
addAll(set: LightWeightSet&lt;T&gt;): boolean
L
linhaoran 已提交
127 128 129

将另一个容器中的所有元素组添加到当前容器中。

Z
zengyawen 已提交
130 131
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
132 133 134 135
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
136
| set | LightWeightSet&lt;T&gt; | 是 | 提供添加元素的lightWeightSet。 |
L
linhaoran 已提交
137

L
liu-ganlin 已提交
138 139 140 141
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
142
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
143 144 145
| -------- | -------- |
| 10200011 | The addAll method cannot be bound. |

Z
zengyawen 已提交
146 147
**示例:**

148
```ts
Z
zengyawen 已提交
149
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
150 151
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
Z
zengyawen 已提交
152
let set = new LightWeightSet();
L
lengchangjing 已提交
153
set.add("gull");
154
let result = lightWeightSet.addAll(set);
Z
zengyawen 已提交
155
```
L
linhaoran 已提交
156 157 158 159


### hasAll

Z
zengyawen 已提交
160
hasAll(set: LightWeightSet&lt;T&gt;): boolean
L
linhaoran 已提交
161 162 163

判断此容器中是否含有该指定set中的所有元素。

Z
zengyawen 已提交
164 165
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
166
**参数:**
L
linhaoran 已提交
167

Z
zengyawen 已提交
168 169 170
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| set | LightWeightSet&lt;T&gt; | 是 | 比较对象。 |
L
linhaoran 已提交
171

Z
zengyawen 已提交
172 173 174 175 176 177
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| boolean | 包含所有元素返回true,否则返回false。 |

L
liu-ganlin 已提交
178 179 180 181
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
182
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
183 184 185
| -------- | -------- |
| 10200011 | The hasAll method cannot be bound. |

Z
zengyawen 已提交
186 187
**示例:**

188
```ts
Z
zengyawen 已提交
189
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
190 191
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
Z
zengyawen 已提交
192
let set = new LightWeightSet();
L
lengchangjing 已提交
193
set.add("sparrow");
Z
zengyawen 已提交
194 195
let result = lightWeightSet.hasAll(set);
```
L
linhaoran 已提交
196 197 198 199


### has

200
has(key: T): boolean
L
linhaoran 已提交
201

202
判断此容器中是否含有该指定key。
L
linhaoran 已提交
203

Z
zengyawen 已提交
204 205
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
206
**参数:**
L
linhaoran 已提交
207

Z
zengyawen 已提交
208 209
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
W
wusongqing 已提交
210
| key | T | 是 | 指定key |
L
linhaoran 已提交
211

Z
zengyawen 已提交
212 213 214 215
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
216
| boolean | 包含指定key返回true,否则返回false。 |
Z
zengyawen 已提交
217

L
liu-ganlin 已提交
218 219 220 221
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
222
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
223 224 225
| -------- | -------- |
| 10200011 | The has method cannot be bound. |

Z
zengyawen 已提交
226 227
**示例:**

228
```ts
Z
zengyawen 已提交
229
let lightWeightSet = new LightWeightSet();
230
let result = lightWeightSet.has(123);
Z
zengyawen 已提交
231
lightWeightSet.add(123);
232
result = lightWeightSet.has(123);
Z
zengyawen 已提交
233
```
L
linhaoran 已提交
234 235 236 237


### equal

Z
zengyawen 已提交
238 239 240
equal(obj: Object): boolean

判断此容器中是否含有该指定obj同类型的对象。
L
linhaoran 已提交
241

Z
zengyawen 已提交
242 243
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
244
**参数:**
L
linhaoran 已提交
245

Z
zengyawen 已提交
246 247 248
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| obj | Object | 是 | 比较对象。 |
L
linhaoran 已提交
249

Z
zengyawen 已提交
250
**返回值:**
L
linhaoran 已提交
251

Z
zengyawen 已提交
252 253 254 255
| 类型 | 说明 |
| -------- | -------- |
| boolean | 构成类型相同返回true,否则返回false。 |

L
liu-ganlin 已提交
256 257 258 259
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
260
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
261 262 263
| -------- | -------- |
| 10200011 | The equal method cannot be bound. |

Z
zengyawen 已提交
264 265
**示例:**

266
```ts
Z
zengyawen 已提交
267
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
268 269 270
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
let obj = ["squirrel", "sparrow"];
Z
zengyawen 已提交
271 272
let result = lightWeightSet.equal(obj);
```
L
linhaoran 已提交
273 274


275
### increaseCapacityTo
L
linhaoran 已提交
276

277
increaseCapacityTo(minimumCapacity: number): void
L
linhaoran 已提交
278 279 280

将当前容器扩容至可以容纳指定数量元素。

Z
zengyawen 已提交
281 282
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
283
**参数:**
L
linhaoran 已提交
284

Z
zengyawen 已提交
285 286 287
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| minimumCapacity | number | 是 | 需要容纳数量。 |
L
linhaoran 已提交
288

L
liu-ganlin 已提交
289 290 291 292
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
293
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
294 295
| -------- | -------- |
| 10200011 | The increaseCapacityTo method cannot be bound. |
L
liu-ganlin 已提交
296
| 10200001 | The parameter value is out of range. |
L
liu-ganlin 已提交
297

Z
zengyawen 已提交
298 299
**示例:**

300
```ts
Z
zengyawen 已提交
301
let lightWeightSet = new LightWeightSet();
302
lightWeightSet.increaseCapacityTo(10);
Z
zengyawen 已提交
303
```
L
linhaoran 已提交
304 305 306 307


### getIndexOf

Z
zengyawen 已提交
308
getIndexOf(key: T): number
L
linhaoran 已提交
309 310 311

获取指定key所对应的下标。

Z
zengyawen 已提交
312 313
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
314 315 316 317 318 319 320 321 322 323
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| key | T | 是 | 查找的指定key。 |

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
324
| number | 在lightWeightSet中指定数据的下标。 |
L
linhaoran 已提交
325

L
liu-ganlin 已提交
326 327 328 329
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
330
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
331 332 333
| -------- | -------- |
| 10200011 | The getIndexOf method cannot be bound. |

Z
zengyawen 已提交
334
**示例:**
L
linhaoran 已提交
335

336
```ts
Z
zengyawen 已提交
337
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
338 339 340
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
let result = lightWeightSet.getIndexOf("sparrow");
Z
zengyawen 已提交
341
```
L
linhaoran 已提交
342 343 344 345


### remove

Z
zengyawen 已提交
346
remove(key: T): T
L
linhaoran 已提交
347

348
删除并返回指定key对应的元素。
L
linhaoran 已提交
349

Z
zengyawen 已提交
350 351
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
352 353 354 355
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
356
| key | T | 是 | 指定key。 |
Z
zengyawen 已提交
357 358 359 360 361 362

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| T | 返回删除元素的值。 |
L
linhaoran 已提交
363

L
liu-ganlin 已提交
364 365 366 367
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
368
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
369 370 371
| -------- | -------- |
| 10200011 | The remove method cannot be bound. |

Z
zengyawen 已提交
372
**示例:**
L
linhaoran 已提交
373

374
```ts
Z
zengyawen 已提交
375
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
376 377 378
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
let result = lightWeightSet.remove("sparrow");
Z
zengyawen 已提交
379
```
L
linhaoran 已提交
380 381 382 383


### removeAt

Z
zengyawen 已提交
384
removeAt(index: number): boolean
L
linhaoran 已提交
385

386
删除指定下标所对应的元素。
L
linhaoran 已提交
387

Z
zengyawen 已提交
388 389
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
390 391 392 393
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
394
| index | number | 是 | 指定下标。 |
L
linhaoran 已提交
395

Z
zengyawen 已提交
396
**返回值:**
L
linhaoran 已提交
397

Z
zengyawen 已提交
398 399 400 401
| 类型 | 说明 |
| -------- | -------- |
| boolean | 确认是否成功删除元素 |

L
liu-ganlin 已提交
402 403 404 405
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
406
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
407 408 409
| -------- | -------- |
| 10200011 | The removeAt method cannot be bound. |

Z
zengyawen 已提交
410 411
**示例:**

412
```ts
Z
zengyawen 已提交
413
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
414 415
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
416
let result = lightWeightSet.removeAt(1);
Z
zengyawen 已提交
417
```
L
linhaoran 已提交
418 419 420 421


### getValueAt

Z
zengyawen 已提交
422 423
getValueAt(index: number): T

424
获取此容器中指定下标对应的元素。
Z
zengyawen 已提交
425

Z
zengyawen 已提交
426 427
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
428
**参数:**
L
linhaoran 已提交
429

Z
zengyawen 已提交
430 431
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
432
| index | number | 是 | 指定下标。 |
L
linhaoran 已提交
433

Z
zengyawen 已提交
434
**返回值:**
L
linhaoran 已提交
435

Z
zengyawen 已提交
436 437
| 类型 | 说明 |
| -------- | -------- |
438
| T | 返回指定下标对应的元素。 |
L
linhaoran 已提交
439

L
liu-ganlin 已提交
440 441 442 443
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
444
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
445 446 447
| -------- | -------- |
| 10200011 | The getValueAt method cannot be bound. |

Z
zengyawen 已提交
448 449
**参数:**

450
```ts
Z
zengyawen 已提交
451
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
452 453
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
454
let result = lightWeightSet.getValueAt(1);
Z
zengyawen 已提交
455
```
L
linhaoran 已提交
456 457 458 459


### clear

Z
zengyawen 已提交
460 461 462
clear(): void

清除容器中的所有元素,并把length置为0。
L
linhaoran 已提交
463

Z
zengyawen 已提交
464 465
**系统能力:** SystemCapability.Utils.Lang

L
liu-ganlin 已提交
466 467 468 469
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
470
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
471 472 473
| -------- | -------- |
| 10200011 | The clear method cannot be bound. |

Z
zengyawen 已提交
474
**示例:**
L
linhaoran 已提交
475

476
```ts
Z
zengyawen 已提交
477
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
478 479
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
Z
zengyawen 已提交
480 481
lightWeightSet.clear();
```
L
linhaoran 已提交
482 483 484 485


### toString

Z
zengyawen 已提交
486
toString(): String
L
linhaoran 已提交
487 488 489

获取包含容器中所有键和值的字符串。

Z
zengyawen 已提交
490 491
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
492
**返回值:**
L
linhaoran 已提交
493

Z
zengyawen 已提交
494 495 496 497
| 类型 | 说明 |
| -------- | -------- |
| String | 返回对应字符串。 |

L
liu-ganlin 已提交
498 499 500 501
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
502
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
503 504 505
| -------- | -------- |
| 10200011 | The toString method cannot be bound. |

Z
zengyawen 已提交
506 507
**示例:**

508
```ts
Z
zengyawen 已提交
509
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
510 511
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
512
let result = lightWeightSet.toString();
Z
zengyawen 已提交
513
```
L
linhaoran 已提交
514 515 516 517


### toArray

Z
zengyawen 已提交
518
toArray(): Array&lt;T&gt;
L
linhaoran 已提交
519 520 521

获取包含此容器中所有对象的数组。

Z
zengyawen 已提交
522 523
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
524 525 526 527 528
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| Array&lt;T&gt; | 返回对应数组。 |
L
linhaoran 已提交
529

L
liu-ganlin 已提交
530 531 532 533
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
534
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
535 536 537
| -------- | -------- |
| 10200011 | The toArray method cannot be bound. |

Z
zengyawen 已提交
538 539
**示例:**

540
```ts
Z
zengyawen 已提交
541
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
542 543
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
544
let result = lightWeightSet.toArray();
Z
zengyawen 已提交
545
```
L
linhaoran 已提交
546 547 548 549


### values

Z
zengyawen 已提交
550
values(): IterableIterator&lt;T&gt;
L
linhaoran 已提交
551

552
返回包含此映射中包含的键值的新迭代器对象。
L
linhaoran 已提交
553

Z
zengyawen 已提交
554 555
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
556 557 558 559 560 561
**返回值:**

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

L
liu-ganlin 已提交
562 563 564 565
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
566
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
567 568 569
| -------- | -------- |
| 10200011 | The values method cannot be bound. |

Z
zengyawen 已提交
570 571
**示例:**

572
```ts
Z
zengyawen 已提交
573
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
574 575
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
Z
zengyawen 已提交
576 577 578 579 580 581 582
let iter = lightWeightSet.values();
let index = 0;
while(index < lightWeightSet.length) {
  console.log(JSON.stringify(iter.next().value));
  index++;
}
```
L
linhaoran 已提交
583 584 585 586


### forEach

587
forEach(callbackFn: (value?: T, key?: T, set?: LightWeightSet&lt;T&gt;) => void, thisArg?: Object): void
L
linhaoran 已提交
588 589 590

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

Z
zengyawen 已提交
591 592
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
593 594 595 596
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
597
| callbackFn | function | 是 | 回调函数。 |
Z
zengyawen 已提交
598 599 600 601 602
| thisArg | Object | 否 | callbackfn被调用时用作this值。 |

callbackfn的参数说明:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
603
| value | T | 否 | 当前遍历到的元素。 |
Z
zengyawen 已提交
604
| key | T | 否 | 当前遍历到的元素(和value相同)。 |
605
| set | LightWeightSet&lt;T&gt; | 否 | 当前调用forEach方法的实例对象。 |
Z
zengyawen 已提交
606

L
liu-ganlin 已提交
607 608 609 610
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
611
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
612 613 614
| -------- | -------- |
| 10200011 | The forEach method cannot be bound. |

Z
zengyawen 已提交
615 616
**示例:**

617
```ts
Z
zengyawen 已提交
618
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
619 620
lightWeightSet.add("sparrow");
lightWeightSet.add("gull");
Z
zengyawen 已提交
621
lightWeightSet.forEach((value, key) => {
622
  console.log("value:" + value, key);
Z
zengyawen 已提交
623 624
});
```
L
linhaoran 已提交
625 626 627 628


### entries

Z
zengyawen 已提交
629
entries(): IterableIterator<[T, T]>
L
linhaoran 已提交
630

631
返回包含此映射中包含的键值对的新迭代器对象。
L
linhaoran 已提交
632

Z
zengyawen 已提交
633 634
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
635 636 637 638 639 640
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| IterableIterator<[T, T]> | 返回一个迭代器。 |

L
liu-ganlin 已提交
641 642 643 644
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
645
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
646 647 648
| -------- | -------- |
| 10200011 | The entries method cannot be bound. |

Z
zengyawen 已提交
649 650
**示例:**

651
```ts
Z
zengyawen 已提交
652
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
653 654
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
Z
zengyawen 已提交
655 656 657 658 659 660 661
let iter = lightWeightSet.entries();
let index = 0;
while(index < lightWeightSet.length) {
  console.log(JSON.stringify(iter.next().value));
  index++;
}
```
L
linhaoran 已提交
662 663 664 665


### [Symbol.iterator]

Z
zengyawen 已提交
666
[Symbol.iterator]\(): IterableIterator&lt;T&gt;
L
linhaoran 已提交
667 668 669

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

Z
zengyawen 已提交
670 671
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
672 673 674 675 676 677
**返回值:**

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

L
liu-ganlin 已提交
678 679 680 681
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

L
liu-ganlin 已提交
682
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
683 684 685
| -------- | -------- |
| 10200011 | The Symbol.iterator method cannot be bound. |

Z
zengyawen 已提交
686 687
**示例:**

688
```ts
Z
zengyawen 已提交
689
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
690 691
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
Z
zengyawen 已提交
692 693 694

// 使用方法一:
for (let item of lightWeightSet) { 
695
  console.log("value:" + item);
Z
zengyawen 已提交
696 697 698 699 700 701
}

// 使用方法二:
let iter = lightWeightSet[Symbol.iterator]();
let temp = iter.next().value;
while(temp != undefined) {
702
  console.log("value:" + temp);
Z
zengyawen 已提交
703 704 705
  temp = iter.next().value;
}
```