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