• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.util.LightWeightSet (非线性容器LightWeightSet)
2
3LightWeightSet可用于存储一系列值的集合,存储元素中value值唯一。
4
5LightWeightSet依据泛型定义,采用轻量级结构,初始默认容量大小为8,每次扩容大小为原始容量的两倍。
6
7集合中value值的查找依赖于hash算法,通过一个数组存储hash值,然后映射到其他数组中的value值。
8
9LightWeightSet和[HashSet](js-apis-hashset.md)都是用来存储键值的集合,LightWeightSet的占用内存更小。
10
11**推荐使用场景:** 当需要存取某个集合或是对某个集合去重时,推荐使用占用内存更小的LightWeightSet。
12
13文档中存在泛型的使用,涉及以下泛型标记符:<br>
14- T:Type,类
15
16> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
17>
18> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
19
20
21## 导入模块
22
23```ts
24import LightWeightSet from '@ohos.util.LightWeightSet';
25```
26
27## LightWeightSet
28
29### 属性
30
31**系统能力:** SystemCapability.Utils.Lang
32
33| 名称 | 类型 | 可读 | 可写 | 说明 |
34| -------- | -------- | -------- | -------- | -------- |
35| length | number | 是 | 否 | LightWeightSet的元素个数。 |
36
37
38### constructor
39
40constructor()
41
42LightWeightSet的构造函数。
43
44**系统能力:** SystemCapability.Utils.Lang
45
46**错误码:**
47
48以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
49
50| 错误码ID | 错误信息 |
51| -------- | -------- |
52| 10200012 | The LightWeightSet's constructor cannot be directly invoked. |
53
54**示例:**
55
56```ts
57let lightWeightSet = new LightWeightSet();
58```
59
60
61### isEmpty
62
63isEmpty(): boolean
64
65判断该容器是否为空。
66
67**系统能力:** SystemCapability.Utils.Lang
68
69**返回值:**
70
71| 类型 | 说明 |
72| -------- | -------- |
73| boolean | 为空返回true,不为空返回false。 |
74
75**错误码:**
76
77以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
78
79| 错误码ID | 错误信息 |
80| -------- | -------- |
81| 10200011 | The isEmpty method cannot be bound. |
82
83**示例:**
84
85```ts
86const lightWeightSet = new LightWeightSet();
87let result = lightWeightSet.isEmpty();
88```
89
90### add
91
92add(obj: T): boolean
93
94向此容器中添加数据。
95
96**系统能力:** SystemCapability.Utils.Lang
97
98**参数:**
99
100| 参数名 | 类型 | 必填 | 说明 |
101| -------- | -------- | -------- | -------- |
102| obj | T | 是 | 添加的成员数据。 |
103
104**返回值:**
105
106| 类型 | 说明 |
107| -------- | -------- |
108| boolean | 成功添加元素返回true,否则返回false。 |
109
110**错误码:**
111
112以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
113
114| 错误码ID | 错误信息 |
115| -------- | -------- |
116| 10200011 | The add method cannot be bound. |
117
118**示例:**
119
120```ts
121let lightWeightSet = new LightWeightSet();
122let result = lightWeightSet.add("squirrel");
123```
124
125
126### addAll
127
128addAll(set: LightWeightSet&lt;T&gt;): boolean
129
130将另一个容器中的所有元素组添加到当前容器中。
131
132**系统能力:** SystemCapability.Utils.Lang
133
134**参数:**
135
136| 参数名 | 类型 | 必填 | 说明 |
137| -------- | -------- | -------- | -------- |
138| set | LightWeightSet&lt;T&gt; | 是 | 提供添加元素的lightWeightSet。 |
139
140**错误码:**
141
142以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
143
144| 错误码ID | 错误信息 |
145| -------- | -------- |
146| 10200011 | The addAll method cannot be bound. |
147
148**示例:**
149
150```ts
151let lightWeightSet = new LightWeightSet();
152lightWeightSet.add("squirrel");
153lightWeightSet.add("sparrow");
154let set = new LightWeightSet();
155set.add("gull");
156let result = lightWeightSet.addAll(set);
157```
158
159
160### hasAll
161
162hasAll(set: LightWeightSet&lt;T&gt;): boolean
163
164判断此容器中是否含有该指定set中的所有元素。
165
166**系统能力:** SystemCapability.Utils.Lang
167
168**参数:**
169
170| 参数名 | 类型 | 必填 | 说明 |
171| -------- | -------- | -------- | -------- |
172| set | LightWeightSet&lt;T&gt; | 是 | 比较对象。 |
173
174**返回值:**
175
176| 类型 | 说明 |
177| -------- | -------- |
178| boolean | 包含所有元素返回true,否则返回false。 |
179
180**错误码:**
181
182以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
183
184| 错误码ID | 错误信息 |
185| -------- | -------- |
186| 10200011 | The hasAll method cannot be bound. |
187
188**示例:**
189
190```ts
191let lightWeightSet = new LightWeightSet();
192lightWeightSet.add("squirrel");
193lightWeightSet.add("sparrow");
194let set = new LightWeightSet();
195set.add("sparrow");
196let result = lightWeightSet.hasAll(set);
197```
198
199
200### has
201
202has(key: T): boolean
203
204判断此容器中是否含有该指定key。
205
206**系统能力:** SystemCapability.Utils.Lang
207
208**参数:**
209
210| 参数名 | 类型 | 必填 | 说明 |
211| -------- | -------- | -------- | -------- |
212| key | T | 是 | 指定key |
213
214**返回值:**
215
216| 类型 | 说明 |
217| -------- | -------- |
218| boolean | 包含指定key返回true,否则返回false。 |
219
220**错误码:**
221
222以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
223
224| 错误码ID | 错误信息 |
225| -------- | -------- |
226| 10200011 | The has method cannot be bound. |
227
228**示例:**
229
230```ts
231let lightWeightSet = new LightWeightSet();
232lightWeightSet.add(123);
233let result = lightWeightSet.has(123);
234```
235
236
237### equal
238
239equal(obj: Object): boolean
240
241判断此容器中是否含有该指定obj同类型的对象。
242
243**系统能力:** SystemCapability.Utils.Lang
244
245**参数:**
246
247| 参数名 | 类型 | 必填 | 说明 |
248| -------- | -------- | -------- | -------- |
249| obj | Object | 是 | 比较对象。 |
250
251**返回值:**
252
253| 类型 | 说明 |
254| -------- | -------- |
255| boolean | 构成类型相同返回true,否则返回false。 |
256
257**错误码:**
258
259以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
260
261| 错误码ID | 错误信息 |
262| -------- | -------- |
263| 10200011 | The equal method cannot be bound. |
264
265**示例:**
266
267```ts
268let lightWeightSet = new LightWeightSet();
269lightWeightSet.add("squirrel");
270lightWeightSet.add("sparrow");
271let obj = ["sparrow", "squirrel"];
272let result = lightWeightSet.equal(obj);
273```
274
275
276### increaseCapacityTo
277
278increaseCapacityTo(minimumCapacity: number): void
279
280将当前容器扩容至可以容纳指定数量元素。
281
282**系统能力:** SystemCapability.Utils.Lang
283
284**参数:**
285
286| 参数名 | 类型 | 必填 | 说明 |
287| -------- | -------- | -------- | -------- |
288| minimumCapacity | number | 是 | 需要容纳数量。 |
289
290**错误码:**
291
292以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
293
294| 错误码ID | 错误信息 |
295| -------- | -------- |
296| 10200011 | The increaseCapacityTo method cannot be bound. |
297| 10200001 | The value of minimumCapacity is out of range. |
298
299**示例:**
300
301```ts
302let lightWeightSet = new LightWeightSet();
303lightWeightSet.increaseCapacityTo(10);
304```
305
306
307### getIndexOf
308
309getIndexOf(key: T): number
310
311获取指定key所对应的下标。
312
313**系统能力:** SystemCapability.Utils.Lang
314
315**参数:**
316
317| 参数名 | 类型 | 必填 | 说明 |
318| -------- | -------- | -------- | -------- |
319| key | T | 是 | 查找的指定key。 |
320
321**返回值:**
322
323| 类型 | 说明 |
324| -------- | -------- |
325| number | 在lightWeightSet中指定数据的下标。 |
326
327**错误码:**
328
329以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
330
331| 错误码ID | 错误信息 |
332| -------- | -------- |
333| 10200011 | The getIndexOf method cannot be bound. |
334
335**示例:**
336
337```ts
338let lightWeightSet = new LightWeightSet();
339lightWeightSet.add("squirrel");
340lightWeightSet.add("sparrow");
341let result = lightWeightSet.getIndexOf("sparrow");
342```
343
344
345### remove
346
347remove(key: T): T
348
349删除并返回指定key对应的元素。
350
351**系统能力:** SystemCapability.Utils.Lang
352
353**参数:**
354
355| 参数名 | 类型 | 必填 | 说明 |
356| -------- | -------- | -------- | -------- |
357| key | T | 是 | 指定key。 |
358
359**返回值:**
360
361| 类型 | 说明 |
362| -------- | -------- |
363| T | 返回删除元素的值。 |
364
365**错误码:**
366
367以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
368
369| 错误码ID | 错误信息 |
370| -------- | -------- |
371| 10200011 | The remove method cannot be bound. |
372
373**示例:**
374
375```ts
376let lightWeightSet = new LightWeightSet();
377lightWeightSet.add("squirrel");
378lightWeightSet.add("sparrow");
379let result = lightWeightSet.remove("sparrow");
380```
381
382
383### removeAt
384
385removeAt(index: number): boolean
386
387删除指定下标所对应的元素。
388
389**系统能力:** SystemCapability.Utils.Lang
390
391**参数:**
392
393| 参数名 | 类型 | 必填 | 说明 |
394| -------- | -------- | -------- | -------- |
395| index | number | 是 | 指定下标。 |
396
397**返回值:**
398
399| 类型 | 说明 |
400| -------- | -------- |
401| boolean | 确认是否成功删除元素 |
402
403**错误码:**
404
405以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
406
407| 错误码ID | 错误信息 |
408| -------- | -------- |
409| 10200011 | The removeAt method cannot be bound. |
410
411**示例:**
412
413```ts
414let lightWeightSet = new LightWeightSet();
415lightWeightSet.add("squirrel");
416lightWeightSet.add("sparrow");
417let result = lightWeightSet.removeAt(1);
418```
419
420
421### getValueAt
422
423getValueAt(index: number): T
424
425获取此容器中指定下标对应的元素。
426
427**系统能力:** SystemCapability.Utils.Lang
428
429**参数:**
430
431| 参数名 | 类型 | 必填 | 说明 |
432| -------- | -------- | -------- | -------- |
433| index | number | 是 | 指定下标。 |
434
435**返回值:**
436
437| 类型 | 说明 |
438| -------- | -------- |
439| T | 返回指定下标对应的元素。 |
440
441**错误码:**
442
443以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
444
445| 错误码ID | 错误信息 |
446| -------- | -------- |
447| 10200011 | The getValueAt method cannot be bound. |
448
449**参数:**
450
451```ts
452let lightWeightSet = new LightWeightSet();
453lightWeightSet.add("squirrel");
454lightWeightSet.add("sparrow");
455let result = lightWeightSet.getValueAt(1);
456```
457
458
459### clear
460
461clear(): void
462
463清除容器中的所有元素,并把length置为0。
464
465**系统能力:** SystemCapability.Utils.Lang
466
467**错误码:**
468
469以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
470
471| 错误码ID | 错误信息 |
472| -------- | -------- |
473| 10200011 | The clear method cannot be bound. |
474
475**示例:**
476
477```ts
478let lightWeightSet = new LightWeightSet();
479lightWeightSet.add("squirrel");
480lightWeightSet.add("sparrow");
481lightWeightSet.clear();
482```
483
484
485### toString
486
487toString(): String
488
489获取包含容器中所有键和值的字符串。
490
491**系统能力:** SystemCapability.Utils.Lang
492
493**返回值:**
494
495| 类型 | 说明 |
496| -------- | -------- |
497| String | 返回对应字符串。 |
498
499**示例:**
500
501```ts
502let lightWeightSet = new LightWeightSet();
503lightWeightSet.add("squirrel");
504lightWeightSet.add("sparrow");
505let result = lightWeightSet.toString();
506```
507
508
509### toArray
510
511toArray(): Array&lt;T&gt;
512
513获取包含此容器中所有对象的数组。
514
515**系统能力:** SystemCapability.Utils.Lang
516
517**返回值:**
518
519| 类型 | 说明 |
520| -------- | -------- |
521| Array&lt;T&gt; | 返回对应数组。 |
522
523**错误码:**
524
525以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
526
527| 错误码ID | 错误信息 |
528| -------- | -------- |
529| 10200011 | The toArray method cannot be bound. |
530
531**示例:**
532
533```ts
534let lightWeightSet = new LightWeightSet();
535lightWeightSet.add("squirrel");
536lightWeightSet.add("sparrow");
537let result = lightWeightSet.toArray();
538```
539
540
541### values
542
543values(): IterableIterator&lt;T&gt;
544
545返回包含此映射中包含的键值的新迭代器对象。
546
547**系统能力:** SystemCapability.Utils.Lang
548
549**返回值:**
550
551| 类型 | 说明 |
552| -------- | -------- |
553| IterableIterator&lt;T&gt; | 返回一个迭代器。 |
554
555**错误码:**
556
557以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
558
559| 错误码ID | 错误信息 |
560| -------- | -------- |
561| 10200011 | The values method cannot be bound. |
562
563**示例:**
564
565```ts
566let lightWeightSet = new LightWeightSet();
567lightWeightSet.add("squirrel");
568lightWeightSet.add("sparrow");
569let iter = lightWeightSet.values();
570let index = 0;
571while(index < lightWeightSet.length) {
572  console.log(JSON.stringify(iter.next().value));
573  index++;
574}
575```
576
577
578### forEach
579
580forEach(callbackFn: (value?: T, key?: T, set?: LightWeightSet&lt;T&gt;) => void, thisArg?: Object): void
581
582通过回调函数来遍历LightWeightSet实例对象上的元素以及元素对应的下标。
583
584**系统能力:** SystemCapability.Utils.Lang
585
586**参数:**
587
588| 参数名 | 类型 | 必填 | 说明 |
589| -------- | -------- | -------- | -------- |
590| callbackFn | function | 是 | 回调函数。 |
591| thisArg | Object | 否 | callbackfn被调用时用作this值。 |
592
593callbackfn的参数说明:
594| 参数名 | 类型 | 必填 | 说明 |
595| -------- | -------- | -------- | -------- |
596| value | T | 否 | 当前遍历到的元素。 |
597| key | T | 否 | 当前遍历到的元素(和value相同)。 |
598| set | LightWeightSet&lt;T&gt; | 否 | 当前调用forEach方法的实例对象。 |
599
600**错误码:**
601
602以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
603
604| 错误码ID | 错误信息 |
605| -------- | -------- |
606| 10200011 | The forEach method cannot be bound. |
607
608**示例:**
609
610```ts
611let lightWeightSet = new LightWeightSet();
612lightWeightSet.add("sparrow");
613lightWeightSet.add("gull");
614lightWeightSet.forEach((value, key) => {
615    console.log("value:" + value, "key:" + key);
616});
617```
618
619
620### entries
621
622entries(): IterableIterator<[T, T]>
623
624返回包含此映射中包含的键值对的新迭代器对象。
625
626**系统能力:** SystemCapability.Utils.Lang
627
628**返回值:**
629
630| 类型 | 说明 |
631| -------- | -------- |
632| IterableIterator<[T, T]> | 返回一个迭代器。 |
633
634**错误码:**
635
636以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
637
638| 错误码ID | 错误信息 |
639| -------- | -------- |
640| 10200011 | The entries method cannot be bound. |
641
642**示例:**
643
644```ts
645let lightWeightSet = new LightWeightSet();
646lightWeightSet.add("squirrel");
647lightWeightSet.add("sparrow");
648let iter = lightWeightSet.entries();
649let index = 0;
650while(index < lightWeightSet.length) {
651  console.log(JSON.stringify(iter.next().value));
652  index++;
653}
654```
655
656
657### [Symbol.iterator]
658
659[Symbol.iterator]\(): IterableIterator&lt;T&gt;
660
661返回一个迭代器,迭代器的每一项都是一个 JavaScript 对象,并返回该对象。
662
663**系统能力:** SystemCapability.Utils.Lang
664
665**返回值:**
666
667| 类型 | 说明 |
668| -------- | -------- |
669| IterableIterator&lt;T&gt; | 返回一个迭代器。 |
670
671**错误码:**
672
673以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
674
675| 错误码ID | 错误信息 |
676| -------- | -------- |
677| 10200011 | The Symbol.iterator method cannot be bound. |
678
679**示例:**
680
681```ts
682let lightWeightSet = new LightWeightSet();
683lightWeightSet.add("squirrel");
684lightWeightSet.add("sparrow");
685
686// 使用方法一:
687for (let item of lightWeightSet) {
688  console.log("value:" + item);
689}
690
691// 使用方法二:
692let iter = lightWeightSet[Symbol.iterator]();
693let temp = iter.next().value;
694while(temp != undefined) {
695  console.log("value:" + temp);
696  temp = iter.next().value;
697}
698```