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

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


## 导入模块

```
10
import LightWeightSet from '@ohos.util.LightWeightSet'  
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

## LightWeightSet


### 属性

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


### constructor

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

LightWeightSet的构造函数。

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

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


### isEmpty

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

判断该容器是否为空。

Z
zengyawen 已提交
46 47 48 49 50
**返回值:**

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

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

```
const lightWeightSet = new LightWeightSet();
56
let result = lightWeightSet.isEmpty();
Z
zengyawen 已提交
57
```
L
linhaoran 已提交
58 59 60

### add

61
add(obj: T): boolean
L
linhaoran 已提交
62 63 64

向此容器中添加数据。

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

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
69
| obj | T | 是 | 添加的成员数据。 |
Z
zengyawen 已提交
70 71 72 73 74 75

**返回值:**

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

Z
zengyawen 已提交
77
**示例:**
L
linhaoran 已提交
78

Z
zengyawen 已提交
79 80
```
let lightWeightSet = new LightWeightSet();
81
let result = lightWeightSet.add("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
Z
zengyawen 已提交
82
```
L
linhaoran 已提交
83 84 85 86


### addAll

Z
zengyawen 已提交
87
addAll(set: LightWeightSet<T>): boolean
L
linhaoran 已提交
88 89 90

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

Z
zengyawen 已提交
91 92 93 94
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
95
| set | LightWeightSet<T> | 是 | 提供添加元素的lightWeightSet。 |
L
linhaoran 已提交
96

Z
zengyawen 已提交
97 98 99 100 101 102 103 104
**示例:**

```
let lightWeightSet = new LightWeightSet();
lightWeightSet.add("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
lightWeightSet.add("sdfs");
let set = new LightWeightSet();
set.add("sfage");
105
let result = lightWeightSet.addAll(set);
Z
zengyawen 已提交
106
```
L
linhaoran 已提交
107 108 109 110


### hasAll

Z
zengyawen 已提交
111
hasAll(set: LightWeightSet<T>): boolean
L
linhaoran 已提交
112 113 114

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

Z
zengyawen 已提交
115
**参数:**
L
linhaoran 已提交
116

Z
zengyawen 已提交
117 118 119
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| set | LightWeightSet<T> | 是 | 比较对象。 |
L
linhaoran 已提交
120

Z
zengyawen 已提交
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
**返回值:**

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

**示例:**

```
let lightWeightSet = new LightWeightSet();
lightWeightSet.add("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
lightWeightSet.add("sdfs");
let set = new LightWeightSet();
set.add("sdfs");
let result = lightWeightSet.hasAll(set);
```
L
linhaoran 已提交
137 138 139 140


### has

141
has(key: T): boolean
L
linhaoran 已提交
142

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

Z
zengyawen 已提交
145
**参数:**
L
linhaoran 已提交
146

Z
zengyawen 已提交
147 148
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
149
| value | T | 是 | 指定key |
L
linhaoran 已提交
150

Z
zengyawen 已提交
151 152 153 154
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
155
| boolean | 包含指定key返回true,否则返回false。 |
Z
zengyawen 已提交
156 157 158 159 160

**示例:**

```
let lightWeightSet = new LightWeightSet();
161
let result = lightWeightSet.has(123);
Z
zengyawen 已提交
162
lightWeightSet.add(123);
163
let result = lightWeightSet.has(123);
Z
zengyawen 已提交
164
```
L
linhaoran 已提交
165 166 167 168


### equal

Z
zengyawen 已提交
169 170 171
equal(obj: Object): boolean

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

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

Z
zengyawen 已提交
175 176 177
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| obj | Object | 是 | 比较对象。 |
L
linhaoran 已提交
178

Z
zengyawen 已提交
179
**返回值:**
L
linhaoran 已提交
180

Z
zengyawen 已提交
181 182 183 184 185 186 187 188 189 190 191 192 193
| 类型 | 说明 |
| -------- | -------- |
| boolean | 构成类型相同返回true,否则返回false。 |

**示例:**

```
let lightWeightSet = new LightWeightSet();
lightWeightSet.add("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
lightWeightSet.add("sdfs");
let obj = {"Ahfbrgrbgnutfodgorrogorgrogofdfdf", "sdfs"};
let result = lightWeightSet.equal(obj);
```
L
linhaoran 已提交
194 195 196 197


### ensureCapacityTo

198
increaseCapacityTo(minimumCapacity: number): void
L
linhaoran 已提交
199 200 201

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

Z
zengyawen 已提交
202
**参数:**
L
linhaoran 已提交
203

Z
zengyawen 已提交
204 205 206
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| minimumCapacity | number | 是 | 需要容纳数量。 |
L
linhaoran 已提交
207

Z
zengyawen 已提交
208 209 210 211 212 213
**示例:**

```
let lightWeightSet = new LightWeightSet();
lightWeightSet.ensureCapacityTo(10);
```
L
linhaoran 已提交
214 215 216 217


### getIndexOf

Z
zengyawen 已提交
218
getIndexOf(key: T): number
L
linhaoran 已提交
219 220 221

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

Z
zengyawen 已提交
222 223 224 225 226 227 228 229 230 231
**参数:**

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

**返回值:**

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

Z
zengyawen 已提交
234
**示例:**
L
linhaoran 已提交
235

Z
zengyawen 已提交
236 237 238 239
```
let lightWeightSet = new LightWeightSet();
lightWeightSet.add("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
lightWeightSet.add("sdfs");
240
let result = lightWeightSet.getIndexOf("sdfs");
Z
zengyawen 已提交
241
```
L
linhaoran 已提交
242 243 244 245


### remove

Z
zengyawen 已提交
246
remove(key: T): T
L
linhaoran 已提交
247

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

Z
zengyawen 已提交
250 251 252 253
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
254
| key | T | 是 | 指定key。 |
Z
zengyawen 已提交
255 256 257 258 259 260

**返回值:**

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

Z
zengyawen 已提交
262
**示例:**
L
linhaoran 已提交
263

Z
zengyawen 已提交
264 265 266 267
```
let lightWeightSet = new LightWeightSet();
lightWeightSet.add("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
lightWeightSet.add("sdfs");
268
let result = lightWeightSet.remove("sdfs");
Z
zengyawen 已提交
269
```
L
linhaoran 已提交
270 271 272 273


### removeAt

Z
zengyawen 已提交
274
removeAt(index: number): boolean
L
linhaoran 已提交
275

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

Z
zengyawen 已提交
278 279 280 281
**参数:**

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

Z
zengyawen 已提交
284
**返回值:**
L
linhaoran 已提交
285

Z
zengyawen 已提交
286 287 288 289 290 291 292 293 294 295
| 类型 | 说明 |
| -------- | -------- |
| boolean | 确认是否成功删除元素 |

**示例:**

```
let lightWeightSet = new LightWeightSet();
lightWeightSet.add("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
lightWeightSet.add("sdfs");
296
let result = lightWeightSet.removeAt(1);
Z
zengyawen 已提交
297
```
L
linhaoran 已提交
298 299 300 301


### getValueAt

Z
zengyawen 已提交
302 303
getValueAt(index: number): T

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

**参数:**
L
linhaoran 已提交
307

Z
zengyawen 已提交
308 309
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
310
| index | number | 是 | 指定下标。 |
L
linhaoran 已提交
311

Z
zengyawen 已提交
312
**返回值:**
L
linhaoran 已提交
313

Z
zengyawen 已提交
314 315
| 类型 | 说明 |
| -------- | -------- |
316
| T | 返回指定下标对应的元素。 |
L
linhaoran 已提交
317

Z
zengyawen 已提交
318 319 320 321 322 323
**参数:**

```
let lightWeightSet = new LightWeightSet();
lightWeightSet.add("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
lightWeightSet.add("sdfs");
324
let result = lightWeightSet.getValueAt(1);
Z
zengyawen 已提交
325
```
L
linhaoran 已提交
326 327 328 329


### clear

Z
zengyawen 已提交
330 331 332
clear(): void

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

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

Z
zengyawen 已提交
336 337 338 339 340 341
```
let lightWeightSet = new LightWeightSet();
lightWeightSet.add("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
lightWeightSet.add("sdfs");
lightWeightSet.clear();
```
L
linhaoran 已提交
342 343 344 345


### toString

Z
zengyawen 已提交
346
toString(): String
L
linhaoran 已提交
347 348 349

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

Z
zengyawen 已提交
350
**返回值:**
L
linhaoran 已提交
351

Z
zengyawen 已提交
352 353 354 355 356 357 358 359 360 361
| 类型 | 说明 |
| -------- | -------- |
| String | 返回对应字符串。 |

**示例:**

```
let lightWeightSet = new LightWeightSet();
lightWeightSet.add("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
lightWeightSet.add("sdfs");
362
let result = lightWeightSet.toString();
Z
zengyawen 已提交
363
```
L
linhaoran 已提交
364 365 366 367


### toArray

Z
zengyawen 已提交
368
toArray(): Array<T>
L
linhaoran 已提交
369 370 371

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

Z
zengyawen 已提交
372 373 374 375 376
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| Array<T> | 返回对应数组。 |
L
linhaoran 已提交
377

Z
zengyawen 已提交
378 379 380 381 382 383
**示例:**

```
let lightWeightSet = new LightWeightSet();
lightWeightSet.add("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
lightWeightSet.add("sdfs");
384
let result = lightWeightSet.toArray();
Z
zengyawen 已提交
385
```
L
linhaoran 已提交
386 387 388 389


### values

Z
zengyawen 已提交
390
values(): IterableIterator<T>
L
linhaoran 已提交
391

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

Z
zengyawen 已提交
394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412
**返回值:**

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

**示例:**

```
let lightWeightSet = new LightWeightSet();
lightWeightSet.add("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
lightWeightSet.add("sdfs");
let iter = lightWeightSet.values();
let index = 0;
while(index < lightWeightSet.length) {
  console.log(JSON.stringify(iter.next().value));
  index++;
}
```
L
linhaoran 已提交
413 414 415 416


### forEach

417
forEach(callbackfn: (value: T, key?: T, set?: LightWeightSet&lt;T&gt;) => void, thisArg?: Object): void
L
linhaoran 已提交
418 419 420

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

Z
zengyawen 已提交
421 422 423 424 425 426 427 428 429 430 431 432
**参数:**

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

callbackfn的参数说明:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| value | T | 是 | 当前遍历到的元素。 |
| key | T | 否 | 当前遍历到的元素(和value相同)。 |
433
| set | LightWeightSet&lt;T&gt; | 否 | 当前调用forEach方法的实例对象。 |
Z
zengyawen 已提交
434 435 436 437 438 439 440 441 442 443 444

**示例:**

```
let lightWeightSet = new LightWeightSet();
lightWeightSet.add("sdfs");
lightWeightSet.add("dfsghsf");
lightWeightSet.forEach((value, key) => {
  console.log(value, key);
});
```
L
linhaoran 已提交
445 446 447 448


### entries

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

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

Z
zengyawen 已提交
453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471
**返回值:**

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

**示例:**

```
let lightWeightSet = new LightWeightSet();
lightWeightSet.add("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
lightWeightSet.add("sdfs");
let iter = lightWeightSet.entries();
let index = 0;
while(index < lightWeightSet.length) {
  console.log(JSON.stringify(iter.next().value));
  index++;
}
```
L
linhaoran 已提交
472 473 474 475


### [Symbol.iterator]

Z
zengyawen 已提交
476
[Symbol.iterator]\(): IterableIterator&lt;T&gt;
L
linhaoran 已提交
477 478 479

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

Z
zengyawen 已提交
480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505
**返回值:**

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

**示例:**

```
let lightWeightSet = new LightWeightSet();
lightWeightSet.add("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
lightWeightSet.add("sdfs");

// 使用方法一:
for (let item of lightWeightSet) { 
  console.log("value: " + item);
}

// 使用方法二:
let iter = lightWeightSet[Symbol.iterator]();
let temp = iter.next().value;
while(temp != undefined) {
  console.log(temp);
  temp = iter.next().value;
}
```