• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.util.List (线性容器List)
2<!--Kit: ArkTS-->
3<!--Subsystem: CommonLibrary-->
4<!--Owner: @xliu-huanwei; @shilei123; @huanghello-->
5<!--Designer: @yuanyao14-->
6<!--Tester: @kirl75; @zsw_zhushiwei-->
7<!--Adviser: @ge-yafang-->
8
9List底层通过单向链表实现,每个节点有一个指向后一个元素的引用。查询元素必须从头遍历,因此查询效率低,但插入和删除效率高。List允许元素为null。
10
11List和[LinkedList](js-apis-linkedlist.md)相比,LinkedList是双向链表,可以快速地在头尾进行增删,而List是单向链表,不支持双向操作。
12
13> **注意:**
14>
15> 在List中使用\[index\]的方式获取元素可能导致未定义结果,推荐使用get()方法。
16
17**推荐使用场景:** 当需要频繁的插入删除元素且需要使用单向链表时,推荐使用List。
18
19文档使用了泛型,涉及以下泛型标记符:
20- T:Type,类
21
22> **说明:**
23>
24> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
25>
26> 容器类使用静态语言实现,限制了存储位置和属性,不支持自定义属性和方法。
27
28
29## 导入模块
30
31```ts
32import { List } from '@kit.ArkTS';
33```
34
35
36## List
37
38### 属性
39
40**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
41
42**系统能力:** SystemCapability.Utils.Lang
43
44| 名称 | 类型 | 只读 | 可选 | 说明 |
45| -------- | -------- | -------- | -------- | -------- |
46| length | number | 是 | 否 | List的元素个数。 |
47
48
49### constructor
50
51constructor()
52
53List的构造函数。
54
55**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
56
57**系统能力:** SystemCapability.Utils.Lang
58
59**错误码:**
60
61以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
62
63| 错误码ID | 错误信息 |
64| -------- | -------- |
65| 10200012 | The List's constructor cannot be directly invoked. |
66
67**示例:**
68
69```ts
70let list = new List<string | number | boolean | object>();
71```
72
73
74### add
75
76add(element: T): boolean
77
78在List尾部插入元素。
79
80**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
81
82**系统能力:** SystemCapability.Utils.Lang
83
84**参数:**
85
86| 参数名 | 类型 | 必填 | 说明 |
87| -------- | -------- | -------- | -------- |
88| element | T | 是 | 添加进去的元素。 |
89
90**返回值:**
91
92| 类型 | 说明 |
93| -------- | -------- |
94| boolean | 插入成功返回true,否则返回false。 |
95
96**错误码:**
97
98以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
99
100| 错误码ID | 错误信息 |
101| -------- | -------- |
102| 10200011 | The add method cannot be bound. |
103
104**示例:**
105
106```ts
107let list = new List<string | number | boolean | object>();
108let result1 = list.add("a");
109let result2 = list.add(1);
110let b = [1, 2, 3];
111let result3 = list.add(b);
112class C {
113  name: string = ''
114  age: string = ''
115}
116let c: C = {name : "Dylan", age : "13"};
117let result4 = list.add(c);
118let result5 = list.add(false);
119console.info("result = ", result5) // result =  true
120```
121
122### insert
123
124insert(element: T, index: number): void
125
126在长度范围内任意位置插入指定元素。
127
128**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
129
130**系统能力:** SystemCapability.Utils.Lang
131
132**参数:**
133
134| 参数名 | 类型 | 必填 | 说明 |
135| -------- | -------- | -------- | -------- |
136| element | T | 是 | 插入元素。 |
137| index | number | 是 | 插入的位置索引。需要小于等于int32_max即2147483647。 |
138
139**错误码:**
140
141以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
142
143| 错误码ID | 错误信息 |
144| -------- | -------- |
145| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
146| 10200001 | The value of index is out of range. |
147| 10200011 | The insert method cannot be bound. |
148
149**示例:**
150
151```ts
152let list = new List<string | number | boolean>();
153list.insert("A", 0);
154list.insert(0, 1);
155list.insert(true, 2);
156console.info("result:", list.get(1));  // result: 0
157```
158
159### has
160
161has(element: T): boolean
162
163判断List中是否包含指定元素。
164
165**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
166
167**系统能力:** SystemCapability.Utils.Lang
168
169**参数:**
170
171| 参数名 | 类型 | 必填 | 说明 |
172| -------- | -------- | -------- | -------- |
173| element | T | 是 | 指定元素。 |
174
175**返回值:**
176
177| 类型 | 说明 |
178| -------- | -------- |
179| boolean | 包含指定元素返回true,否则返回false。 |
180
181**错误码:**
182
183以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
184
185| 错误码ID | 错误信息 |
186| -------- | -------- |
187| 10200011 | The has method cannot be bound. |
188
189**示例:**
190
191```ts
192let list = new List<string>();
193list.add("squirrel");
194let result = list.has("squirrel");
195console.info("result:", result);  // result: true
196```
197
198### get
199
200get(index: number): T
201
202根据下标获取List中的元素。
203
204**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
205
206**系统能力:** SystemCapability.Utils.Lang
207
208**参数:**
209
210| 参数名 | 类型 | 必填 | 说明 |
211| -------- | -------- | -------- | -------- |
212| index | number | 是 | 要查找的下标。需要小于等于int32_max即2147483647。 |
213
214**返回值:**
215
216| 类型 | 说明 |
217| -------- | -------- |
218| T | 根据下标查找到的元素。 |
219
220**错误码:**
221
222以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
223
224| 错误码ID | 错误信息 |
225| -------- | -------- |
226| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
227| 10200011 | The get method cannot be bound. |
228
229**示例:**
230
231```ts
232let list = new List<number>()
233list.add(2);
234list.add(4);
235list.add(5);
236list.add(2);
237list.add(1);
238list.add(2);
239list.add(4);
240let result = list.get(2);
241console.info("result:", result);  // result: 5
242```
243
244### getLastIndexOf
245
246getLastIndexOf(element: T): number
247
248查找指定元素最后一次出现的下标值,查找失败返回-1。
249
250**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
251
252**系统能力:** SystemCapability.Utils.Lang
253
254**参数:**
255
256| 参数名 | 类型 | 必填 | 说明 |
257| -------- | -------- | -------- | -------- |
258| element | T | 是 | 指定元素。 |
259
260**返回值:**
261
262| 类型 | 说明 |
263| -------- | -------- |
264| number | 返回指定元素最后一次出现的下标值,没有找到返回-1。 |
265
266**错误码:**
267
268以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
269
270| 错误码ID | 错误信息 |
271| -------- | -------- |
272| 10200011 | The getLastIndexOf method cannot be bound. |
273
274**示例:**
275
276```ts
277let list = new List<number>()
278list.add(2);
279list.add(4);
280list.add(5);
281list.add(2);
282list.add(1);
283list.add(2);
284list.add(4);
285let result = list.getLastIndexOf(2);
286console.info("result:", result); // result: 5
287```
288
289### getIndexOf
290
291getIndexOf(element: T): number
292
293查找指定元素第一次出现的下标值,查找失败返回-1。
294
295**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
296
297**系统能力:** SystemCapability.Utils.Lang
298
299**参数:**
300
301| 参数名 | 类型 | 必填 | 说明 |
302| -------- | -------- | -------- | -------- |
303| element | T | 是 | 指定元素。 |
304
305**返回值:**
306
307| 类型 | 说明 |
308| -------- | -------- |
309| number | 返回第一次找到指定元素的下标,没有找到返回-1。 |
310
311**错误码:**
312
313以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
314
315| 错误码ID | 错误信息 |
316| -------- | -------- |
317| 10200011 | The getIndexOf method cannot be bound. |
318
319**示例:**
320
321```ts
322let list = new List<number>()
323list.add(2);
324list.add(4);
325list.add(5);
326list.add(2);
327list.add(1);
328list.add(2);
329list.add(4);
330let result = list.getIndexOf(2);
331console.info("result:", result); // result: 0
332```
333
334### equal
335
336equal(obj: Object): boolean
337
338比较指定对象与此List是否相等。
339
340**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
341
342**系统能力:** SystemCapability.Utils.Lang
343
344**参数:**
345
346| 参数名 | 类型 | 必填 | 说明 |
347| -------- | -------- | -------- | -------- |
348| obj | Object | 是 | 用来比较的对象。 |
349
350**返回值:**
351
352| 类型 | 说明 |
353| -------- | -------- |
354| boolean | 如果对象与此列表相同返回true,否则返回false。 |
355
356**错误码:**
357
358以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
359
360| 错误码ID | 错误信息 |
361| -------- | -------- |
362| 10200011 | The equal method cannot be bound. |
363
364**示例:**
365
366```ts
367let list = new List<number>()
368list.add(2);
369list.add(4);
370list.add(5);
371let obj = new List<number>();
372obj.add(2);
373obj.add(4);
374obj.add(5);
375let result = list.equal(obj);
376console.info("result:", result);  // result: true
377```
378
379### removeByIndex
380
381removeByIndex(index: number): T
382
383根据元素的下标值查找元素,并将其删除。
384
385**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
386
387**系统能力:** SystemCapability.Utils.Lang
388
389**参数:**
390
391| 参数名 | 类型 | 必填 | 说明 |
392| -------- | -------- | -------- | -------- |
393| index | number | 是 | 指定元素的下标值。需要小于等于int32_max即2147483647。 |
394
395**返回值:**
396
397| 类型 | 说明 |
398| -------- | -------- |
399| T | 返回被删除的元素。 |
400
401**错误码:**
402
403以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
404
405| 错误码ID | 错误信息 |
406| -------- | -------- |
407| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
408| 10200001 | The value of index is out of range. |
409| 10200011 | The removeByIndex method cannot be bound. |
410
411**示例:**
412
413```ts
414let list = new List<number>()
415list.add(2);
416list.add(4);
417list.add(5);
418list.add(2);
419list.add(4);
420let result = list.removeByIndex(2);
421console.info("result:", result);  // result: 5
422```
423
424### remove
425
426remove(element: T): boolean
427
428删除查找到的第一个指定的元素。
429
430**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
431
432**系统能力:** SystemCapability.Utils.Lang
433
434**参数:**
435
436| 参数名 | 类型 | 必填 | 说明 |
437| -------- | -------- | -------- | -------- |
438| element | T | 是 | 指定元素。 |
439
440**返回值:**
441
442| 类型 | 说明 |
443| -------- | -------- |
444| boolean | 删除成功返回true,否则返回false。 |
445
446**错误码:**
447
448以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
449
450| 错误码ID | 错误信息 |
451| -------- | -------- |
452| 10200011 | The remove method cannot be bound. |
453
454**示例:**
455
456```ts
457let list = new List<number>()
458list.add(2);
459list.add(4);
460list.add(5);
461list.add(4);
462let result = list.remove(2);
463console.info("result:", result);  // result: true
464```
465
466### replaceAllElements
467
468replaceAllElements(callbackFn: (value: T, index?: number, list?: List&lt;T&gt;) => T,
469thisArg?: Object): void
470
471遍历List中的元素,并用回调函数返回的新值替换原List中的元素。
472
473**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
474
475**系统能力:** SystemCapability.Utils.Lang
476
477**参数:**
478
479| 参数名 | 类型 | 必填 | 说明 |
480| -------- | -------- | -------- | -------- |
481| callbackFn | function | 是 | 回调函数。 |
482| thisArg | Object | 否 | callbackFn被调用时用作this值,默认值为当前实例对象。 |
483
484callbackFn的参数说明:
485
486| 参数名 | 类型 | 必填 | 说明 |
487| -------- | -------- | -------- | -------- |
488| value | T | 是 | 当前遍历到的元素。 |
489| index | number | 否 | 当前遍历到的下标值,默认值为0。 |
490| list | List&lt;T&gt; | 否 | 当前调用replaceAllElements方法的实例对象,默认值为当前实例对象。 |
491
492**错误码:**
493
494以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
495
496| 错误码ID | 错误信息 |
497| -------- | -------- |
498| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
499| 10200011 | The replaceAllElements method cannot be bound. |
500
501**示例:**
502
503```ts
504let list = new List<number>()
505list.add(2);
506list.add(4);
507list.add(5);
508list.add(4);
509list.replaceAllElements((value: number) => {
510  // 用户操作逻辑根据实际场景进行添加。
511  if (value === 5) {
512    return value * 2;
513  }
514  return value;
515});
516
517console.info("result:", list.get(2));  // result: 10
518```
519
520### forEach
521
522forEach(callbackFn: (value: T, index?: number, List?: List&lt;T&gt;) => void,
523thisArg?: Object): void
524
525在遍历List实例对象中每一个元素的过程中,对每个元素执行回调函数。
526
527**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
528
529**系统能力:** SystemCapability.Utils.Lang
530
531**参数:**
532
533| 参数名 | 类型 | 必填 | 说明 |
534| -------- | -------- | -------- | -------- |
535| callbackFn | function | 是 | 回调函数。 |
536| thisArg | Object | 否 | callbackFn被调用时用作this值,默认值为当前实例对象。 |
537
538callbackFn的参数说明:
539
540| 参数名 | 类型 | 必填 | 说明 |
541| -------- | -------- | -------- | -------- |
542| value | T | 是 | 当前遍历到的元素。 |
543| index | number | 否 | 当前遍历到的下标值,默认值为0。 |
544| List | List&lt;T&gt; | 否 | 当前调用forEach方法的实例对象,默认值为当前实例对象。 |
545
546**错误码:**
547
548以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
549
550| 错误码ID | 错误信息 |
551| -------- | -------- |
552| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
553| 10200011 | The forEach method cannot be bound. |
554
555**示例:**
556
557```ts
558let list = new List<number>()
559list.add(2);
560list.add(4);
561list.add(5);
562list.add(4);
563list.forEach((value: number, index: number) => {
564  console.info("value:" + value, "index:" + index);
565});
566// value:2 index:0
567// value:4 index:1
568// value:5 index:2
569// value:4 index:3
570```
571
572### sort
573
574sort(comparator: (firstValue: T, secondValue: T) => number): void
575
576对List中的元素进行排序。
577
578**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
579
580**系统能力:** SystemCapability.Utils.Lang
581
582**参数:**
583
584| 参数名 | 类型 | 必填 | 说明 |
585| -------- | -------- | -------- | -------- |
586| comparator | function | 是 | 回调函数。 |
587
588comparator的参数说明:
589
590| 参数名 | 类型 | 必填 | 说明 |
591| -------- | -------- | -------- | -------- |
592| firstValue | T | 是 | 前一项元素。 |
593| secondValue | T | 是 | 后一项元素。 |
594
595**错误码:**
596
597以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
598
599| 错误码ID | 错误信息 |
600| -------- | -------- |
601| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
602| 10200011 | The sort method cannot be bound. |
603
604**示例:**
605
606```ts
607let list = new List<number>()
608list.add(2);
609list.add(1);
610list.add(3);
611list.add(4);
612list.sort((a: number, b: number) => a - b);  // 结果为升序排列
613console.info("result:", list.convertToArray());  // result: 1,2,3,4
614
615list.sort((a: number, b: number) => b - a);  // 结果为降序排列
616console.info("result:", list.convertToArray());  // result: 4,3,2,1
617```
618
619### getSubList
620
621getSubList(fromIndex: number, toIndex: number): List&lt;T&gt;
622
623根据下标截取List中的一段元素,并返回这一段List实例,包括起始值但不包括终止值。
624
625**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
626
627**系统能力:** SystemCapability.Utils.Lang
628
629**参数:**
630
631| 参数名 | 类型 | 必填 | 说明 |
632| -------- | -------- | -------- | -------- |
633| fromIndex | number | 是 | 起始下标。 |
634| toIndex | number | 是 | 终止下标。 |
635
636**返回值:**
637
638| 类型 | 说明 |
639| -------- | -------- |
640| List&lt;T&gt; | 返回List对象实例。 |
641
642**错误码:**
643
644以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
645
646| 错误码ID | 错误信息 |
647| -------- | -------- |
648| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
649| 10200001 | The value of fromIndex or toIndex is out of range. |
650| 10200011 | The getSubList method cannot be bound. |
651
652**示例:**
653
654```ts
655let list = new List<number>()
656list.add(2);
657list.add(4);
658list.add(6);
659list.add(8);
660let result = list.getSubList(1, 3);
661console.info("result:", result.convertToArray());  // result: 4,6
662```
663
664### clear
665
666clear(): void
667
668清除List中的所有元素,并将length置为0。
669
670**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
671
672**系统能力:** SystemCapability.Utils.Lang
673
674**错误码:**
675
676以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
677
678| 错误码ID | 错误信息 |
679| -------- | -------- |
680| 10200011 | The clear method cannot be bound. |
681
682**示例:**
683
684```ts
685let list = new List<number>()
686list.add(2);
687list.add(4);
688list.add(5);
689list.add(4);
690list.clear();
691let result = list.isEmpty();
692console.info("result:", result);  // result: true
693```
694
695### set
696
697set(index: number, element: T): T
698
699替换List指定位置的元素。
700
701**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
702
703**系统能力:** SystemCapability.Utils.Lang
704
705**参数:**
706
707| 参数名 | 类型 | 必填 | 说明 |
708| -------- | -------- | -------- | -------- |
709| index | number | 是 | 查找的下标值。需要小于等于int32_max即2147483647。 |
710| element | T | 是 | 用来替换的元素。 |
711
712**返回值:**
713
714| 类型 | 说明 |
715| -------- | -------- |
716| T | 返回替换后的元素。 |
717
718**错误码:**
719
720以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
721
722| 错误码ID | 错误信息 |
723| -------- | -------- |
724| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
725| 10200001 | The value of index is out of range. |
726| 10200011 | The set method cannot be bound. |
727
728**示例:**
729
730```ts
731let list = new List<number | string>();
732list.add(2);
733list.add(4);
734list.add(5);
735list.add(4);
736let result = list.set(2, "b");
737console.info("result:", JSON.stringify(list));  // result: {"0":2,"1":4,"2":"b","3":4}
738```
739
740### convertToArray
741
742convertToArray(): Array&lt;T&gt;
743
744把当前List实例转换成数组并返回。
745
746**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
747
748**系统能力:** SystemCapability.Utils.Lang
749
750**返回值:**
751
752| 类型 | 说明 |
753| -------- | -------- |
754| Array&lt;T&gt; | 返回转换后的数组。 |
755
756**错误码:**
757
758以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
759
760| 错误码ID | 错误信息 |
761| -------- | -------- |
762| 10200011 | The convertToArray method cannot be bound. |
763
764**示例:**
765
766```ts
767let list = new List<number>()
768list.add(2);
769list.add(4);
770list.add(5);
771list.add(4);
772let result = list.convertToArray();
773console.info("result:", result);  // result: 2,4,5,4
774```
775
776### isEmpty
777
778isEmpty(): boolean
779
780判断List是否为空。
781
782**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
783
784**系统能力:** SystemCapability.Utils.Lang
785
786**返回值:**
787
788| 类型 | 说明 |
789| -------- | -------- |
790| boolean | 为空返回true,不为空返回false。 |
791
792**错误码:**
793
794以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
795
796| 错误码ID | 错误信息 |
797| -------- | -------- |
798| 10200011 | The isEmpty method cannot be bound. |
799
800**示例:**
801
802```ts
803let list = new List<number>()
804list.add(2);
805list.add(4);
806list.add(5);
807list.add(4);
808let result = list.isEmpty();
809console.info("result:", result);  // result: false
810```
811
812### getFirst
813
814getFirst(): T
815
816获取List实例中的第一个元素。
817
818**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
819
820**系统能力:** SystemCapability.Utils.Lang
821
822**返回值:**
823
824| 类型 | 说明 |
825| -------- | -------- |
826| T | 返回实例的第一个元素。 |
827
828**错误码:**
829
830以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
831
832| 错误码ID | 错误信息 |
833| -------- | -------- |
834| 10200011 | The getFirst method cannot be bound. |
835
836**示例:**
837
838```ts
839let list = new List<number>()
840list.add(2);
841list.add(4);
842list.add(5);
843list.add(4);
844let result = list.getFirst();
845console.info("result:", result);  // result: 2
846```
847
848### getLast
849
850getLast(): T
851
852获取List实例中的最后一个元素。
853
854**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
855
856**系统能力:** SystemCapability.Utils.Lang
857
858**返回值:**
859
860| 类型 | 说明 |
861| -------- | -------- |
862| T | 返回实例的最后一个元素。 |
863
864**错误码:**
865
866以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
867
868| 错误码ID | 错误信息 |
869| -------- | -------- |
870| 10200011 | The getLast method cannot be bound. |
871
872**示例:**
873
874```ts
875let list = new List<number>()
876list.add(2);
877list.add(4);
878list.add(5);
879list.add(4);
880let result = list.getLast();
881console.info("result:", result);  // result: 4
882```
883
884### [Symbol.iterator]
885
886[Symbol.iterator]\(): IterableIterator&lt;T&gt;
887
888返回一个迭代器,迭代器的每一项都是一个JavaScript对象。
889
890**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
891
892**系统能力:** SystemCapability.Utils.Lang
893
894**返回值:**
895
896| 类型 | 说明 |
897| -------- | -------- |
898| IterableIterator&lt;T&gt; | 返回一个迭代器。 |
899
900**错误码:**
901
902以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
903
904| 错误码ID | 错误信息 |
905| -------- | -------- |
906| 10200011 | The Symbol.iterator method cannot be bound. |
907
908**示例:**
909
910```ts
911let list = new List<number>();
912list.add(2);
913list.add(4);
914list.add(5);
915list.add(4);
916
917// 使用方法一:
918for (let item of list) {
919  console.info("value: " + item);
920}
921// value: 2
922// value: 4
923// value: 5
924// value: 4
925
926// 使用方法二:
927let iter = list[Symbol.iterator]();
928let temp: IteratorResult<number> = iter.next();
929while(!temp.done) {
930  console.info("value: " + temp.value);
931  temp = iter.next();
932}
933// value: 2
934// value: 4
935// value: 5
936// value: 4
937```