js-apis-lightweightset.md 16.8 KB
Newer Older
B
bi-hu 已提交
1
# @ohos.util.LightWeightSet (非线性容器LightWeightSet)
L
linhaoran 已提交
2

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

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

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

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

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

B
bi-hu 已提交
13 14 15 16 17 18 19
文档中存在泛型的使用,涉及以下泛型标记符:<br>
- T:Type,类

> **说明:**
>
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

L
lengchangjing 已提交
20

L
linhaoran 已提交
21 22
## 导入模块

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

## LightWeightSet

### 属性

Z
zengyawen 已提交
31 32
**系统能力:** SystemCapability.Utils.Lang

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


### constructor

Z
zengyawen 已提交
40
constructor()
L
linhaoran 已提交
41 42 43

LightWeightSet的构造函数。

Z
zengyawen 已提交
44 45
**系统能力:** SystemCapability.Utils.Lang

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

B
bi-hu 已提交
48
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
49

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

Z
zengyawen 已提交
54 55
**示例:**

56
```ts
57
let lightWeightSet: LightWeightSet<number | string> = new LightWeightSet();
Z
zengyawen 已提交
58
```
L
linhaoran 已提交
59 60 61 62


### isEmpty

Z
zengyawen 已提交
63
isEmpty(): boolean
L
linhaoran 已提交
64 65 66

判断该容器是否为空。

Z
zengyawen 已提交
67 68
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
69 70 71 72 73
**返回值:**

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

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

B
bi-hu 已提交
77
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
78

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

Z
zengyawen 已提交
83 84
**示例:**

85
```ts
86
const lightWeightSet: LightWeightSet<number> = new LightWeightSet();
87
let result = lightWeightSet.isEmpty();
Z
zengyawen 已提交
88
```
L
linhaoran 已提交
89 90 91

### add

92
add(obj: T): boolean
L
linhaoran 已提交
93 94 95

向此容器中添加数据。

Z
zengyawen 已提交
96 97
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
98 99 100 101
**参数:**

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

**返回值:**

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

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

B
bi-hu 已提交
112
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
113

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

Z
zengyawen 已提交
118
**示例:**
L
linhaoran 已提交
119

120
```ts
121
let lightWeightSet: LightWeightSet<string> = new LightWeightSet();
L
lengchangjing 已提交
122
let result = lightWeightSet.add("squirrel");
Z
zengyawen 已提交
123
```
L
linhaoran 已提交
124 125 126 127


### addAll

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

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

Z
zengyawen 已提交
132 133
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
134 135 136 137
**参数:**

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

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

B
bi-hu 已提交
142
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
143

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

Z
zengyawen 已提交
148 149
**示例:**

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


### hasAll

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

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

Z
zengyawen 已提交
166 167
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
168
**参数:**
L
linhaoran 已提交
169

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

Z
zengyawen 已提交
174 175 176 177 178 179
**返回值:**

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

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

B
bi-hu 已提交
182
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
183

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

Z
zengyawen 已提交
188 189
**示例:**

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


### has

202
has(key: T): boolean
L
linhaoran 已提交
203

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

Z
zengyawen 已提交
206 207
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
208
**参数:**
L
linhaoran 已提交
209

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

Z
zengyawen 已提交
214 215 216 217
**返回值:**

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

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

B
bi-hu 已提交
222
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
223

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

Z
zengyawen 已提交
228 229
**示例:**

230
```ts
231
let lightWeightSet: LightWeightSet<string> = new LightWeightSet();
Z
zengyawen 已提交
232
lightWeightSet.add(123);
B
bi-hu 已提交
233
let result = lightWeightSet.has(123);
Z
zengyawen 已提交
234
```
L
linhaoran 已提交
235 236 237 238


### equal

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

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

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

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

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

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

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

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

B
bi-hu 已提交
259
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
260

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

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

267
```ts
268
let lightWeightSet: LightWeightSet<string> = new LightWeightSet();
L
lengchangjing 已提交
269 270
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
B
bi-hu 已提交
271
let obj = ["sparrow", "squirrel"];
Z
zengyawen 已提交
272 273
let result = lightWeightSet.equal(obj);
```
L
linhaoran 已提交
274 275


276
### increaseCapacityTo
L
linhaoran 已提交
277

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

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

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

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

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

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

B
bi-hu 已提交
292
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
293

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

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

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


### getIndexOf

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

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

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

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

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

**返回值:**

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

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

B
bi-hu 已提交
329
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
330

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

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

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


### remove

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

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

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

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

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

**返回值:**

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

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

B
bi-hu 已提交
367
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
368

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

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

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


### removeAt

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

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

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

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

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

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

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

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

B
bi-hu 已提交
405
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
406

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

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

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


### getValueAt

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

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

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

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

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

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

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

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

B
bi-hu 已提交
443
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
444

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

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

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


### clear

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

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

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

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

B
bi-hu 已提交
469
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
470

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

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

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


### toString

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

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

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

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

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

**示例:**

501
```ts
502
let lightWeightSet: LightWeightSet<string> = new LightWeightSet();
L
lengchangjing 已提交
503 504
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
505
let result = lightWeightSet.toString();
Z
zengyawen 已提交
506
```
L
linhaoran 已提交
507 508 509 510


### toArray

Z
zengyawen 已提交
511
toArray(): Array&lt;T&gt;
L
linhaoran 已提交
512 513 514

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

Z
zengyawen 已提交
515 516
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
517 518 519 520 521
**返回值:**

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

L
liu-ganlin 已提交
523 524
**错误码:**

B
bi-hu 已提交
525
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
526

L
liu-ganlin 已提交
527
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
528 529 530
| -------- | -------- |
| 10200011 | The toArray method cannot be bound. |

Z
zengyawen 已提交
531 532
**示例:**

533
```ts
534
let lightWeightSet: LightWeightSet<string> = new LightWeightSet();
L
lengchangjing 已提交
535 536
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
537
let result = lightWeightSet.toArray();
Z
zengyawen 已提交
538
```
L
linhaoran 已提交
539 540 541 542


### values

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

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

Z
zengyawen 已提交
547 548
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
549 550 551 552 553 554
**返回值:**

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

L
liu-ganlin 已提交
555 556
**错误码:**

B
bi-hu 已提交
557
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
558

L
liu-ganlin 已提交
559
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
560 561 562
| -------- | -------- |
| 10200011 | The values method cannot be bound. |

Z
zengyawen 已提交
563 564
**示例:**

565
```ts
566
let lightWeightSet: LightWeightSet<string> = new LightWeightSet();
L
lengchangjing 已提交
567 568
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
Z
zengyawen 已提交
569 570 571 572 573 574 575
let iter = lightWeightSet.values();
let index = 0;
while(index < lightWeightSet.length) {
  console.log(JSON.stringify(iter.next().value));
  index++;
}
```
L
linhaoran 已提交
576 577 578 579


### forEach

580
forEach(callbackFn: (value?: T, key?: T, set?: LightWeightSet&lt;T&gt;) => void, thisArg?: Object): void
L
linhaoran 已提交
581 582 583

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

Z
zengyawen 已提交
584 585
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
586 587 588 589
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
590
| callbackFn | function | 是 | 回调函数。 |
591
| thisArg | Object | 否 | callbackfn被调用时用作this值,默认值为当前实例对象。 |
Z
zengyawen 已提交
592 593 594 595

callbackfn的参数说明:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
596 597 598
| value | T | 否 | 当前遍历到的元素键值对的值,默认值为首个键值对的值。 |
| key | T | 否 | 当前遍历到的元素键值对的键(和value相同),默认值为首个键值对的键。 |
| set | LightWeightSet&lt;T&gt; | 否 | 当前调用forEach方法的实例对象,默认值为当前实例对象。 |
Z
zengyawen 已提交
599

L
liu-ganlin 已提交
600 601
**错误码:**

B
bi-hu 已提交
602
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
603

L
liu-ganlin 已提交
604
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
605 606 607
| -------- | -------- |
| 10200011 | The forEach method cannot be bound. |

Z
zengyawen 已提交
608 609
**示例:**

610
```ts
611
let lightWeightSet: LightWeightSet<string> = new LightWeightSet();
L
lengchangjing 已提交
612 613
lightWeightSet.add("sparrow");
lightWeightSet.add("gull");
614
lightWeightSet.forEach((value ?: string, key ?: string) => {
615
  console.log("value:" + value, "key:" + key);
Z
zengyawen 已提交
616 617
});
```
L
linhaoran 已提交
618 619 620 621


### entries

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

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

Z
zengyawen 已提交
626 627
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
628 629 630 631 632 633
**返回值:**

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

L
liu-ganlin 已提交
634 635
**错误码:**

B
bi-hu 已提交
636
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
637

L
liu-ganlin 已提交
638
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
639 640 641
| -------- | -------- |
| 10200011 | The entries method cannot be bound. |

Z
zengyawen 已提交
642 643
**示例:**

644
```ts
645
let lightWeightSet: LightWeightSet<string> = new LightWeightSet();
L
lengchangjing 已提交
646 647
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
Z
zengyawen 已提交
648 649 650 651 652 653 654
let iter = lightWeightSet.entries();
let index = 0;
while(index < lightWeightSet.length) {
  console.log(JSON.stringify(iter.next().value));
  index++;
}
```
L
linhaoran 已提交
655 656 657 658


### [Symbol.iterator]

Z
zengyawen 已提交
659
[Symbol.iterator]\(): IterableIterator&lt;T&gt;
L
linhaoran 已提交
660 661 662

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

Z
zengyawen 已提交
663 664
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
665 666 667 668 669 670
**返回值:**

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

L
liu-ganlin 已提交
671 672
**错误码:**

B
bi-hu 已提交
673
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
674

L
liu-ganlin 已提交
675
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
676 677 678
| -------- | -------- |
| 10200011 | The Symbol.iterator method cannot be bound. |

Z
zengyawen 已提交
679 680
**示例:**

681
```ts
682
let lightWeightSet: LightWeightSet<string> = new LightWeightSet();
L
lengchangjing 已提交
683 684
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
Z
zengyawen 已提交
685 686

// 使用方法一:
687 688
let nums: Array<string> = lightWeightSet.toArray()
for (let item of nums) {
689
  console.log("value:" + item);
Z
zengyawen 已提交
690 691 692 693
}

// 使用方法二:
let iter = lightWeightSet[Symbol.iterator]();
694
let temp: IteratorResult<string> = iter.next();
695 696 697
while(!temp.done) {
  console.log("value:" + temp.value);
  temp = iter.next();
Z
zengyawen 已提交
698 699
}
```