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