js-apis-lightweightset.md 20.6 KB
Newer Older
L
linhaoran 已提交
1 2 3 4 5
# 非线性容器LightWeightSet  

> ![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 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 48 49
**错误码:**

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

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
Z
zengyawen 已提交
57
let lightWeightSet = new LightWeightSet();
L
liu-ganlin 已提交
58 59 60 61 62
try {
  let lightWeightSet2 = LightWeightSet();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
63
```
L
linhaoran 已提交
64 65 66 67


### isEmpty

Z
zengyawen 已提交
68
isEmpty(): boolean
L
linhaoran 已提交
69 70 71

判断该容器是否为空。

Z
zengyawen 已提交
72 73
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
74 75 76 77 78
**返回值:**

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

L
liu-ganlin 已提交
80 81 82 83
**错误码:**

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

L
liu-ganlin 已提交
84
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
85 86 87
| -------- | -------- |
| 10200011 | The isEmpty method cannot be bound. |

Z
zengyawen 已提交
88 89
**示例:**

90
```ts
Z
zengyawen 已提交
91
const lightWeightSet = new LightWeightSet();
92
let result = lightWeightSet.isEmpty();
L
liu-ganlin 已提交
93
try {
L
liu-ganlin 已提交
94
  lightWeightSet.isEmpty.bind({})(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
95 96 97
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
98
```
L
linhaoran 已提交
99 100 101

### add

102
add(obj: T): boolean
L
linhaoran 已提交
103 104 105

向此容器中添加数据。

Z
zengyawen 已提交
106 107
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
108 109 110 111
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
112
| obj | T | 是 | 添加的成员数据。 |
Z
zengyawen 已提交
113 114 115 116 117 118

**返回值:**

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

L
liu-ganlin 已提交
120 121 122 123
**错误码:**

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

L
liu-ganlin 已提交
124
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
125 126 127
| -------- | -------- |
| 10200011 | The add method cannot be bound. |

Z
zengyawen 已提交
128
**示例:**
L
linhaoran 已提交
129

130
```ts
Z
zengyawen 已提交
131
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
132
let result = lightWeightSet.add("squirrel");
L
liu-ganlin 已提交
133
try {
L
liu-ganlin 已提交
134
  lightWeightSet.add.bind({}, "squirrel")(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
135 136 137
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
138
```
L
linhaoran 已提交
139 140 141 142


### addAll

Z
zengyawen 已提交
143
addAll(set: LightWeightSet&lt;T&gt;): boolean
L
linhaoran 已提交
144 145 146

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

Z
zengyawen 已提交
147 148
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
149 150 151 152
**参数:**

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

L
liu-ganlin 已提交
155 156 157 158
**错误码:**

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

L
liu-ganlin 已提交
159
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
160 161 162
| -------- | -------- |
| 10200011 | The addAll method cannot be bound. |

Z
zengyawen 已提交
163 164
**示例:**

165
```ts
Z
zengyawen 已提交
166
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
167 168
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
Z
zengyawen 已提交
169
let set = new LightWeightSet();
L
lengchangjing 已提交
170
set.add("gull");
171
let result = lightWeightSet.addAll(set);
L
liu-ganlin 已提交
172
try {
L
liu-ganlin 已提交
173
  lightWeightSet.addAll.bind({}, set)(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
174 175 176
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
177
```
L
linhaoran 已提交
178 179 180 181


### hasAll

Z
zengyawen 已提交
182
hasAll(set: LightWeightSet&lt;T&gt;): boolean
L
linhaoran 已提交
183 184 185

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

Z
zengyawen 已提交
186 187
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
188
**参数:**
L
linhaoran 已提交
189

Z
zengyawen 已提交
190 191 192
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| set | LightWeightSet&lt;T&gt; | 是 | 比较对象。 |
L
linhaoran 已提交
193

Z
zengyawen 已提交
194 195 196 197 198 199
**返回值:**

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

L
liu-ganlin 已提交
200 201 202 203
**错误码:**

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

L
liu-ganlin 已提交
204
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
205 206 207
| -------- | -------- |
| 10200011 | The hasAll method cannot be bound. |

Z
zengyawen 已提交
208 209
**示例:**

210
```ts
Z
zengyawen 已提交
211
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
212 213
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
Z
zengyawen 已提交
214
let set = new LightWeightSet();
L
lengchangjing 已提交
215
set.add("sparrow");
Z
zengyawen 已提交
216
let result = lightWeightSet.hasAll(set);
L
liu-ganlin 已提交
217
try {
L
liu-ganlin 已提交
218
  lightWeightSet.hasAll.bind({}, set)(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
219 220 221
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
222
```
L
linhaoran 已提交
223 224 225 226


### has

227
has(key: T): boolean
L
linhaoran 已提交
228

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

Z
zengyawen 已提交
231 232
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
233
**参数:**
L
linhaoran 已提交
234

Z
zengyawen 已提交
235 236
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
W
wusongqing 已提交
237
| key | T | 是 | 指定key |
L
linhaoran 已提交
238

Z
zengyawen 已提交
239 240 241 242
**返回值:**

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

L
liu-ganlin 已提交
245 246 247 248
**错误码:**

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

L
liu-ganlin 已提交
249
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
250 251 252
| -------- | -------- |
| 10200011 | The has method cannot be bound. |

Z
zengyawen 已提交
253 254
**示例:**

255
```ts
Z
zengyawen 已提交
256
let lightWeightSet = new LightWeightSet();
257
let result = lightWeightSet.has(123);
Z
zengyawen 已提交
258
lightWeightSet.add(123);
259
result = lightWeightSet.has(123);
L
liu-ganlin 已提交
260
try {
L
liu-ganlin 已提交
261
  lightWeightSet.has.bind({}, 123)(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
262 263 264
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
265
```
L
linhaoran 已提交
266 267 268 269


### equal

Z
zengyawen 已提交
270 271 272
equal(obj: Object): boolean

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

Z
zengyawen 已提交
274 275
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
276
**参数:**
L
linhaoran 已提交
277

Z
zengyawen 已提交
278 279 280
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| obj | Object | 是 | 比较对象。 |
L
linhaoran 已提交
281

Z
zengyawen 已提交
282
**返回值:**
L
linhaoran 已提交
283

Z
zengyawen 已提交
284 285 286 287
| 类型 | 说明 |
| -------- | -------- |
| boolean | 构成类型相同返回true,否则返回false。 |

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

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

L
liu-ganlin 已提交
292
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
293 294 295
| -------- | -------- |
| 10200011 | The equal method cannot be bound. |

Z
zengyawen 已提交
296 297
**示例:**

298
```ts
Z
zengyawen 已提交
299
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
300 301 302
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
let obj = ["squirrel", "sparrow"];
Z
zengyawen 已提交
303
let result = lightWeightSet.equal(obj);
L
liu-ganlin 已提交
304
try {
L
liu-ganlin 已提交
305
  lightWeightSet.equal.bind({}, obj)(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
306 307 308
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
309
```
L
linhaoran 已提交
310 311


312
### increaseCapacityTo
L
linhaoran 已提交
313

314
increaseCapacityTo(minimumCapacity: number): void
L
linhaoran 已提交
315 316 317

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

Z
zengyawen 已提交
318 319
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
320
**参数:**
L
linhaoran 已提交
321

Z
zengyawen 已提交
322 323 324
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| minimumCapacity | number | 是 | 需要容纳数量。 |
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 334
| -------- | -------- |
| 10200011 | The increaseCapacityTo method cannot be bound. |
| 10200001 | The value of parameters are out of range. |

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

337
```ts
Z
zengyawen 已提交
338
let lightWeightSet = new LightWeightSet();
339
lightWeightSet.increaseCapacityTo(10);
L
liu-ganlin 已提交
340
try {
L
liu-ganlin 已提交
341
  lightWeightSet.increaseCapacityTo.bind({}, 10)(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
342 343 344 345 346 347 348 349
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
try {
  lightWeightSet.increaseCapacityTo(2);
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
350
```
L
linhaoran 已提交
351 352 353 354


### getIndexOf

Z
zengyawen 已提交
355
getIndexOf(key: T): number
L
linhaoran 已提交
356 357 358

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

Z
zengyawen 已提交
359 360
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
361 362 363 364 365 366 367 368 369 370
**参数:**

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

**返回值:**

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

L
liu-ganlin 已提交
373 374 375 376
**错误码:**

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

L
liu-ganlin 已提交
377
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
378 379 380
| -------- | -------- |
| 10200011 | The getIndexOf method cannot be bound. |

Z
zengyawen 已提交
381
**示例:**
L
linhaoran 已提交
382

383
```ts
Z
zengyawen 已提交
384
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
385 386 387
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
let result = lightWeightSet.getIndexOf("sparrow");
L
liu-ganlin 已提交
388
try {
L
liu-ganlin 已提交
389
  lightWeightSet.getIndexOf.bind({}, "sparrow")(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
390 391 392
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
393
```
L
linhaoran 已提交
394 395 396 397


### remove

Z
zengyawen 已提交
398
remove(key: T): T
L
linhaoran 已提交
399

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

Z
zengyawen 已提交
402 403
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
404 405 406 407
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
408
| key | T | 是 | 指定key。 |
Z
zengyawen 已提交
409 410 411 412 413 414

**返回值:**

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

L
liu-ganlin 已提交
416 417 418 419
**错误码:**

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

L
liu-ganlin 已提交
420
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
421 422 423
| -------- | -------- |
| 10200011 | The remove method cannot be bound. |

Z
zengyawen 已提交
424
**示例:**
L
linhaoran 已提交
425

426
```ts
Z
zengyawen 已提交
427
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
428 429 430
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
let result = lightWeightSet.remove("sparrow");
L
liu-ganlin 已提交
431
try {
L
liu-ganlin 已提交
432
  lightWeightSet.remove.bind({}, "sparrow")(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
433 434 435
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
436
```
L
linhaoran 已提交
437 438 439 440


### removeAt

Z
zengyawen 已提交
441
removeAt(index: number): boolean
L
linhaoran 已提交
442

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

Z
zengyawen 已提交
445 446
**系统能力:** SystemCapability.Utils.Lang

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

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

Z
zengyawen 已提交
453
**返回值:**
L
linhaoran 已提交
454

Z
zengyawen 已提交
455 456 457 458
| 类型 | 说明 |
| -------- | -------- |
| boolean | 确认是否成功删除元素 |

L
liu-ganlin 已提交
459 460 461 462
**错误码:**

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

L
liu-ganlin 已提交
463
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
464 465 466
| -------- | -------- |
| 10200011 | The removeAt method cannot be bound. |

Z
zengyawen 已提交
467 468
**示例:**

469
```ts
Z
zengyawen 已提交
470
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
471 472
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
473
let result = lightWeightSet.removeAt(1);
L
liu-ganlin 已提交
474
try {
L
liu-ganlin 已提交
475
  lightWeightSet.removeAt.bind({}, 1)(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
476 477 478
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
479
```
L
linhaoran 已提交
480 481 482 483


### getValueAt

Z
zengyawen 已提交
484 485
getValueAt(index: number): T

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

Z
zengyawen 已提交
488 489
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
490
**参数:**
L
linhaoran 已提交
491

Z
zengyawen 已提交
492 493
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
494
| index | number | 是 | 指定下标。 |
L
linhaoran 已提交
495

Z
zengyawen 已提交
496
**返回值:**
L
linhaoran 已提交
497

Z
zengyawen 已提交
498 499
| 类型 | 说明 |
| -------- | -------- |
500
| T | 返回指定下标对应的元素。 |
L
linhaoran 已提交
501

L
liu-ganlin 已提交
502 503 504 505
**错误码:**

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

L
liu-ganlin 已提交
506
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
507 508 509
| -------- | -------- |
| 10200011 | The getValueAt method cannot be bound. |

Z
zengyawen 已提交
510 511
**参数:**

512
```ts
Z
zengyawen 已提交
513
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
514 515
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
516
let result = lightWeightSet.getValueAt(1);
L
liu-ganlin 已提交
517
try {
L
liu-ganlin 已提交
518
  lightWeightSet.getValueAt.bind({}, 1)(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
519 520 521
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
522
```
L
linhaoran 已提交
523 524 525 526


### clear

Z
zengyawen 已提交
527 528 529
clear(): void

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

Z
zengyawen 已提交
531 532
**系统能力:** SystemCapability.Utils.Lang

L
liu-ganlin 已提交
533 534 535 536
**错误码:**

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

L
liu-ganlin 已提交
537
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
538 539 540
| -------- | -------- |
| 10200011 | The clear method cannot be bound. |

Z
zengyawen 已提交
541
**示例:**
L
linhaoran 已提交
542

543
```ts
Z
zengyawen 已提交
544
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
545 546
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
Z
zengyawen 已提交
547
lightWeightSet.clear();
L
liu-ganlin 已提交
548
try {
L
liu-ganlin 已提交
549
  lightWeightSet.clear.bind({})(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
550 551 552
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
553
```
L
linhaoran 已提交
554 555 556 557


### toString

Z
zengyawen 已提交
558
toString(): String
L
linhaoran 已提交
559 560 561

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

Z
zengyawen 已提交
562 563
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
564
**返回值:**
L
linhaoran 已提交
565

Z
zengyawen 已提交
566 567 568 569
| 类型 | 说明 |
| -------- | -------- |
| String | 返回对应字符串。 |

L
liu-ganlin 已提交
570 571 572 573
**错误码:**

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

L
liu-ganlin 已提交
574
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
575 576 577
| -------- | -------- |
| 10200011 | The toString method cannot be bound. |

Z
zengyawen 已提交
578 579
**示例:**

580
```ts
Z
zengyawen 已提交
581
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
582 583
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
584
let result = lightWeightSet.toString();
L
liu-ganlin 已提交
585
try {
L
liu-ganlin 已提交
586
  lightWeightSet.toString.bind({})(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
587 588 589
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
590
```
L
linhaoran 已提交
591 592 593 594


### toArray

Z
zengyawen 已提交
595
toArray(): Array&lt;T&gt;
L
linhaoran 已提交
596 597 598

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

Z
zengyawen 已提交
599 600
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
601 602 603 604 605
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| Array&lt;T&gt; | 返回对应数组。 |
L
linhaoran 已提交
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 toArray method cannot be bound. |

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

617
```ts
Z
zengyawen 已提交
618
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
619 620
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
621
let result = lightWeightSet.toArray();
L
liu-ganlin 已提交
622
try {
L
liu-ganlin 已提交
623
  lightWeightSet.toArray.bind({})(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
624 625 626
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
627
```
L
linhaoran 已提交
628 629 630 631


### values

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

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

Z
zengyawen 已提交
636 637
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
638 639 640 641 642 643
**返回值:**

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

L
liu-ganlin 已提交
644 645 646 647
**错误码:**

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

L
liu-ganlin 已提交
648
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
649 650 651
| -------- | -------- |
| 10200011 | The values method cannot be bound. |

Z
zengyawen 已提交
652 653
**示例:**

654
```ts
Z
zengyawen 已提交
655
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
656 657
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
Z
zengyawen 已提交
658 659 660 661 662 663
let iter = lightWeightSet.values();
let index = 0;
while(index < lightWeightSet.length) {
  console.log(JSON.stringify(iter.next().value));
  index++;
}
L
liu-ganlin 已提交
664
try {
L
liu-ganlin 已提交
665
  lightWeightSet.values.bind({})(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
666 667 668
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
669
```
L
linhaoran 已提交
670 671 672 673


### forEach

674
forEach(callbackfn: (value?: T, key?: T, set?: LightWeightSet&lt;T&gt;) => void, thisArg?: Object): void
L
linhaoran 已提交
675 676 677

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

Z
zengyawen 已提交
678 679
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
680 681 682 683 684 685 686 687 688 689
**参数:**

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

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

L
liu-ganlin 已提交
694 695 696 697
**错误码:**

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

L
liu-ganlin 已提交
698
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
699 700 701
| -------- | -------- |
| 10200011 | The forEach method cannot be bound. |

Z
zengyawen 已提交
702 703
**示例:**

704
```ts
Z
zengyawen 已提交
705
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
706 707
lightWeightSet.add("sparrow");
lightWeightSet.add("gull");
Z
zengyawen 已提交
708
lightWeightSet.forEach((value, key) => {
709
  console.log("value:" + value, key);
Z
zengyawen 已提交
710
});
L
liu-ganlin 已提交
711 712 713
try {
  lightWeightSet.forEach.bind({}, (value, key) => {
    console.log("value:" + value, key);
L
liu-ganlin 已提交
714
  })(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
715 716 717
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
718
```
L
linhaoran 已提交
719 720 721 722


### entries

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

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

Z
zengyawen 已提交
727 728
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
729 730 731 732 733 734
**返回值:**

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

L
liu-ganlin 已提交
735 736 737 738
**错误码:**

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

L
liu-ganlin 已提交
739
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
740 741 742
| -------- | -------- |
| 10200011 | The entries method cannot be bound. |

Z
zengyawen 已提交
743 744
**示例:**

745
```ts
Z
zengyawen 已提交
746
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
747 748
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
Z
zengyawen 已提交
749 750 751 752 753 754
let iter = lightWeightSet.entries();
let index = 0;
while(index < lightWeightSet.length) {
  console.log(JSON.stringify(iter.next().value));
  index++;
}
L
liu-ganlin 已提交
755
try {
L
liu-ganlin 已提交
756
  lightWeightSet.entries.bind({})(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
757 758 759
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
760
```
L
linhaoran 已提交
761 762 763 764


### [Symbol.iterator]

Z
zengyawen 已提交
765
[Symbol.iterator]\(): IterableIterator&lt;T&gt;
L
linhaoran 已提交
766 767 768

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

Z
zengyawen 已提交
769 770
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
771 772 773 774 775 776
**返回值:**

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

L
liu-ganlin 已提交
777 778 779 780
**错误码:**

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

L
liu-ganlin 已提交
781
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
782 783 784
| -------- | -------- |
| 10200011 | The Symbol.iterator method cannot be bound. |

Z
zengyawen 已提交
785 786
**示例:**

787
```ts
Z
zengyawen 已提交
788
let lightWeightSet = new LightWeightSet();
L
lengchangjing 已提交
789 790
lightWeightSet.add("squirrel");
lightWeightSet.add("sparrow");
Z
zengyawen 已提交
791 792 793

// 使用方法一:
for (let item of lightWeightSet) { 
794
  console.log("value:" + item);
Z
zengyawen 已提交
795 796 797 798 799 800
}

// 使用方法二:
let iter = lightWeightSet[Symbol.iterator]();
let temp = iter.next().value;
while(temp != undefined) {
801
  console.log("value:" + temp);
Z
zengyawen 已提交
802 803
  temp = iter.next().value;
}
L
liu-ganlin 已提交
804
try {
L
liu-ganlin 已提交
805
  lightWeightSet[Symbol.iterator].bind({})(); // bind为JS标准内置对象Function的方法,用于改变this的指向,测试异常捕获
L
liu-ganlin 已提交
806 807 808
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
809
```