1e41f4b71Sopenharmony_ci# @ohos.util.Deque (Linear Container Deque)
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ciDouble-ended queue (deque) is a sequence container implemented based on the queue data structure that follows the principles of First In First Out (FIFO) and Last In First Out (LIFO). It allows insertion and removal of elements at both the ends. **Deque** can dynamically adjust the capacity based on project requirements. It doubles the capacity each time. **Deque** differs from **[Queue](js-apis-queue.md)** and **[Vector](js-apis-vector.md)** mainly in the following aspects:
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci**Queue** follows the principle of FIFO only and allows element removal at the front and insertion at the rear.
6e41f4b71Sopenharmony_ci
7e41f4b71Sopenharmony_ci**Vector** supports insertion and deletion of elements in between, as well as at both the ends. When compared with **Vector**, **Deque** is more efficient in inserting and removing header elements, but less efficient in accessing elements.
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci**Recommended use case**: Use **Deque** when you need to frequently insert or remove elements at both the ends of a container.
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ciThis topic uses the following to identify the use of generics:
12e41f4b71Sopenharmony_ci- T: Type
13e41f4b71Sopenharmony_ci
14e41f4b71Sopenharmony_ci> **NOTE**
15e41f4b71Sopenharmony_ci>
16e41f4b71Sopenharmony_ci> The initial APIs of this module are supported since API version 8. Newly added APIs will be marked with a superscript to indicate their earliest API version.
17e41f4b71Sopenharmony_ci
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci## Modules to Import
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci```ts
22e41f4b71Sopenharmony_ciimport { Deque } from '@kit.ArkTS';
23e41f4b71Sopenharmony_ci```
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci## Deque
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci### Attributes
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
30e41f4b71Sopenharmony_ci
31e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang
32e41f4b71Sopenharmony_ci
33e41f4b71Sopenharmony_ci| Name| Type| Readable| Writable| Description|
34e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | -------- |
35e41f4b71Sopenharmony_ci| length | number | Yes| No| Number of elements in a deque (called container later).|
36e41f4b71Sopenharmony_ci
37e41f4b71Sopenharmony_ci### constructor
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ciconstructor()
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ciA constructor used to create a **Deque** instance.
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang
46e41f4b71Sopenharmony_ci
47e41f4b71Sopenharmony_ci**Error codes**
48e41f4b71Sopenharmony_ci
49e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md).
50e41f4b71Sopenharmony_ci
51e41f4b71Sopenharmony_ci| ID| Error Message|
52e41f4b71Sopenharmony_ci| -------- | -------- |
53e41f4b71Sopenharmony_ci| 10200012 | The Deque's constructor cannot be directly invoked. |
54e41f4b71Sopenharmony_ci
55e41f4b71Sopenharmony_ci**Example**
56e41f4b71Sopenharmony_ci
57e41f4b71Sopenharmony_ci```ts
58e41f4b71Sopenharmony_cilet deque: Deque<string | number | boolean | Object> = new Deque();
59e41f4b71Sopenharmony_ci```
60e41f4b71Sopenharmony_ci
61e41f4b71Sopenharmony_ci### insertFront
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ciinsertFront(element: T): void
64e41f4b71Sopenharmony_ci
65e41f4b71Sopenharmony_ciInserts an element at the front of this container.
66e41f4b71Sopenharmony_ci
67e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ci**Parameters**
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description|
74e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
75e41f4b71Sopenharmony_ci| element | T | Yes| Target element.|
76e41f4b71Sopenharmony_ci
77e41f4b71Sopenharmony_ci**Error codes**
78e41f4b71Sopenharmony_ci
79e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md).
80e41f4b71Sopenharmony_ci
81e41f4b71Sopenharmony_ci| ID| Error Message|
82e41f4b71Sopenharmony_ci| -------- | -------- |
83e41f4b71Sopenharmony_ci| 10200011 | The insertFront method cannot be bound. |
84e41f4b71Sopenharmony_ci
85e41f4b71Sopenharmony_ci**Example**
86e41f4b71Sopenharmony_ci
87e41f4b71Sopenharmony_ci```ts
88e41f4b71Sopenharmony_ciclass C1 {
89e41f4b71Sopenharmony_ci  name: string = ""
90e41f4b71Sopenharmony_ci  age: string = ""
91e41f4b71Sopenharmony_ci}
92e41f4b71Sopenharmony_cilet deque: Deque<string | number | boolean | Array<number> | C1> = new Deque();
93e41f4b71Sopenharmony_cideque.insertFront("a");
94e41f4b71Sopenharmony_cideque.insertFront(1);
95e41f4b71Sopenharmony_cilet b = [1, 2, 3];
96e41f4b71Sopenharmony_cideque.insertFront(b);
97e41f4b71Sopenharmony_cilet c: C1 = {name : "Dylan", age : "13"};
98e41f4b71Sopenharmony_cideque.insertFront(c);
99e41f4b71Sopenharmony_cideque.insertFront(false);
100e41f4b71Sopenharmony_ci```
101e41f4b71Sopenharmony_ci
102e41f4b71Sopenharmony_ci### insertEnd
103e41f4b71Sopenharmony_ci
104e41f4b71Sopenharmony_ciinsertEnd(element: T): void
105e41f4b71Sopenharmony_ci
106e41f4b71Sopenharmony_ciInserts an element at the end of this container.
107e41f4b71Sopenharmony_ci
108e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
109e41f4b71Sopenharmony_ci
110e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang
111e41f4b71Sopenharmony_ci
112e41f4b71Sopenharmony_ci**Parameters**
113e41f4b71Sopenharmony_ci
114e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description|
115e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
116e41f4b71Sopenharmony_ci| element | T | Yes| Target element.|
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_ci**Error codes**
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md).
121e41f4b71Sopenharmony_ci
122e41f4b71Sopenharmony_ci| ID| Error Message|
123e41f4b71Sopenharmony_ci| -------- | -------- |
124e41f4b71Sopenharmony_ci| 10200011 | The insertEnd method cannot be bound. |
125e41f4b71Sopenharmony_ci
126e41f4b71Sopenharmony_ci**Example**
127e41f4b71Sopenharmony_ci
128e41f4b71Sopenharmony_ci```ts
129e41f4b71Sopenharmony_ciclass C1 {
130e41f4b71Sopenharmony_ci  name: string = ""
131e41f4b71Sopenharmony_ci  age: string = ""
132e41f4b71Sopenharmony_ci}
133e41f4b71Sopenharmony_ci
134e41f4b71Sopenharmony_cilet deque: Deque<string | number | boolean | Array<number> | C1> = new Deque();
135e41f4b71Sopenharmony_cideque.insertEnd("a");
136e41f4b71Sopenharmony_cideque.insertEnd(1);
137e41f4b71Sopenharmony_cilet b = [1, 2, 3];
138e41f4b71Sopenharmony_cideque.insertEnd(b);
139e41f4b71Sopenharmony_cilet c: C1 = {name : "Dylan", age : "13"};
140e41f4b71Sopenharmony_cideque.insertEnd(c);
141e41f4b71Sopenharmony_cideque.insertEnd(false);
142e41f4b71Sopenharmony_ci```
143e41f4b71Sopenharmony_ci
144e41f4b71Sopenharmony_ci### has
145e41f4b71Sopenharmony_ci
146e41f4b71Sopenharmony_cihas(element: T): boolean
147e41f4b71Sopenharmony_ci
148e41f4b71Sopenharmony_ciChecks whether this container has the specified element.
149e41f4b71Sopenharmony_ci
150e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
151e41f4b71Sopenharmony_ci
152e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang
153e41f4b71Sopenharmony_ci
154e41f4b71Sopenharmony_ci**Parameters**
155e41f4b71Sopenharmony_ci
156e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description|
157e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
158e41f4b71Sopenharmony_ci| element | T | Yes| Target element.|
159e41f4b71Sopenharmony_ci
160e41f4b71Sopenharmony_ci**Return value**
161e41f4b71Sopenharmony_ci
162e41f4b71Sopenharmony_ci| Type| Description|
163e41f4b71Sopenharmony_ci| -------- | -------- |
164e41f4b71Sopenharmony_ci| boolean | Returns **true** if the specified element is contained; returns **false** otherwise.|
165e41f4b71Sopenharmony_ci
166e41f4b71Sopenharmony_ci**Error codes**
167e41f4b71Sopenharmony_ci
168e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md).
169e41f4b71Sopenharmony_ci
170e41f4b71Sopenharmony_ci| ID| Error Message|
171e41f4b71Sopenharmony_ci| -------- | -------- |
172e41f4b71Sopenharmony_ci| 10200011 | The has method cannot be bound. |
173e41f4b71Sopenharmony_ci
174e41f4b71Sopenharmony_ci**Example**
175e41f4b71Sopenharmony_ci
176e41f4b71Sopenharmony_ci```ts
177e41f4b71Sopenharmony_cilet deque: Deque<string> = new Deque();
178e41f4b71Sopenharmony_cideque.insertFront("squirrel");
179e41f4b71Sopenharmony_cilet result = deque.has("squirrel");
180e41f4b71Sopenharmony_ci```
181e41f4b71Sopenharmony_ci
182e41f4b71Sopenharmony_ci### popFirst
183e41f4b71Sopenharmony_ci
184e41f4b71Sopenharmony_cipopFirst(): T
185e41f4b71Sopenharmony_ci
186e41f4b71Sopenharmony_ciRemoves the first element of this container.
187e41f4b71Sopenharmony_ci
188e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
189e41f4b71Sopenharmony_ci
190e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang
191e41f4b71Sopenharmony_ci
192e41f4b71Sopenharmony_ci**Return value**
193e41f4b71Sopenharmony_ci
194e41f4b71Sopenharmony_ci| Type| Description|
195e41f4b71Sopenharmony_ci| -------- | -------- |
196e41f4b71Sopenharmony_ci| T | First element removed.|
197e41f4b71Sopenharmony_ci
198e41f4b71Sopenharmony_ci**Error codes**
199e41f4b71Sopenharmony_ci
200e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md).
201e41f4b71Sopenharmony_ci
202e41f4b71Sopenharmony_ci| ID| Error Message|
203e41f4b71Sopenharmony_ci| -------- | -------- |
204e41f4b71Sopenharmony_ci| 10200011 | The popFirst method cannot be bound. |
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci**Example**
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ci```ts
209e41f4b71Sopenharmony_cilet deque: Deque<number> = new Deque();
210e41f4b71Sopenharmony_cideque.insertFront(2);
211e41f4b71Sopenharmony_cideque.insertFront(4);
212e41f4b71Sopenharmony_cideque.insertEnd(5);
213e41f4b71Sopenharmony_cideque.insertFront(2);
214e41f4b71Sopenharmony_cideque.insertFront(4);
215e41f4b71Sopenharmony_cilet result = deque.popFirst();
216e41f4b71Sopenharmony_ci```
217e41f4b71Sopenharmony_ci
218e41f4b71Sopenharmony_ci### popLast
219e41f4b71Sopenharmony_ci
220e41f4b71Sopenharmony_cipopLast(): T
221e41f4b71Sopenharmony_ci
222e41f4b71Sopenharmony_ciRemoves the last element of this container.
223e41f4b71Sopenharmony_ci
224e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
225e41f4b71Sopenharmony_ci
226e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang
227e41f4b71Sopenharmony_ci
228e41f4b71Sopenharmony_ci**Return value**
229e41f4b71Sopenharmony_ci
230e41f4b71Sopenharmony_ci| Type| Description|
231e41f4b71Sopenharmony_ci| -------- | -------- |
232e41f4b71Sopenharmony_ci| T | Last element removed.|
233e41f4b71Sopenharmony_ci
234e41f4b71Sopenharmony_ci**Error codes**
235e41f4b71Sopenharmony_ci
236e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md).
237e41f4b71Sopenharmony_ci
238e41f4b71Sopenharmony_ci| ID| Error Message|
239e41f4b71Sopenharmony_ci| -------- | -------- |
240e41f4b71Sopenharmony_ci| 10200011 | The popLast method cannot be bound. |
241e41f4b71Sopenharmony_ci
242e41f4b71Sopenharmony_ci**Example**
243e41f4b71Sopenharmony_ci
244e41f4b71Sopenharmony_ci```ts
245e41f4b71Sopenharmony_cilet deque: Deque<number> = new Deque();
246e41f4b71Sopenharmony_cideque.insertFront(2);
247e41f4b71Sopenharmony_cideque.insertEnd(4);
248e41f4b71Sopenharmony_cideque.insertFront(5);
249e41f4b71Sopenharmony_cideque.insertFront(2);
250e41f4b71Sopenharmony_cideque.insertFront(4);
251e41f4b71Sopenharmony_cilet result = deque.popLast();
252e41f4b71Sopenharmony_ci```
253e41f4b71Sopenharmony_ci
254e41f4b71Sopenharmony_ci### forEach
255e41f4b71Sopenharmony_ci
256e41f4b71Sopenharmony_ciforEach(callbackFn: (value: T, index?: number, deque?: Deque&lt;T&gt;) => void,
257e41f4b71Sopenharmony_cithisArg?: Object): void
258e41f4b71Sopenharmony_ci
259e41f4b71Sopenharmony_ciUses a callback to traverse the elements in this container and obtain their position indexes.
260e41f4b71Sopenharmony_ci
261e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
262e41f4b71Sopenharmony_ci
263e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang
264e41f4b71Sopenharmony_ci
265e41f4b71Sopenharmony_ci**Parameters**
266e41f4b71Sopenharmony_ci
267e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description|
268e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
269e41f4b71Sopenharmony_ci| callbackFn | function | Yes| Callback invoked to traverse the elements in the container.|
270e41f4b71Sopenharmony_ci| thisArg | Object | No| Value of **this** to use when **callbackFn** is invoked. The default value is this instance.|
271e41f4b71Sopenharmony_ci
272e41f4b71Sopenharmony_cicallbackFn
273e41f4b71Sopenharmony_ci
274e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description|
275e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
276e41f4b71Sopenharmony_ci| value | T | Yes| Value of the element that is currently traversed.|
277e41f4b71Sopenharmony_ci| index | number | No| Position index of the element that is currently traversed. The default value is **0**.|
278e41f4b71Sopenharmony_ci| deque | Deque&lt;T&gt; | No| Instance that calls the **forEach** API. The default value is this instance.|
279e41f4b71Sopenharmony_ci
280e41f4b71Sopenharmony_ci**Error codes**
281e41f4b71Sopenharmony_ci
282e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
283e41f4b71Sopenharmony_ci
284e41f4b71Sopenharmony_ci| ID| Error Message|
285e41f4b71Sopenharmony_ci| -------- | -------- |
286e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
287e41f4b71Sopenharmony_ci| 10200011 | The forEach method cannot be bound. |
288e41f4b71Sopenharmony_ci
289e41f4b71Sopenharmony_ci**Example**
290e41f4b71Sopenharmony_ci
291e41f4b71Sopenharmony_ci```ts
292e41f4b71Sopenharmony_cilet deque: Deque<number> = new Deque();
293e41f4b71Sopenharmony_cideque.insertFront(2);
294e41f4b71Sopenharmony_cideque.insertEnd(4);
295e41f4b71Sopenharmony_cideque.insertFront(5);
296e41f4b71Sopenharmony_cideque.insertEnd(4);
297e41f4b71Sopenharmony_cideque.forEach((value: number, index?: number | undefined, deque?: Deque<number> | undefined):void => {
298e41f4b71Sopenharmony_ci  console.log("value:" + value, "index:" + index);
299e41f4b71Sopenharmony_ci});
300e41f4b71Sopenharmony_ci```
301e41f4b71Sopenharmony_ci
302e41f4b71Sopenharmony_ci### getFirst
303e41f4b71Sopenharmony_ci
304e41f4b71Sopenharmony_cigetFirst(): T
305e41f4b71Sopenharmony_ci
306e41f4b71Sopenharmony_ciObtains the first element of this container.
307e41f4b71Sopenharmony_ci
308e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
309e41f4b71Sopenharmony_ci
310e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang
311e41f4b71Sopenharmony_ci
312e41f4b71Sopenharmony_ci**Return value**
313e41f4b71Sopenharmony_ci
314e41f4b71Sopenharmony_ci| Type| Description|
315e41f4b71Sopenharmony_ci| -------- | -------- |
316e41f4b71Sopenharmony_ci| T | First element of the T type obtained.|
317e41f4b71Sopenharmony_ci
318e41f4b71Sopenharmony_ci**Error codes**
319e41f4b71Sopenharmony_ci
320e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md).
321e41f4b71Sopenharmony_ci
322e41f4b71Sopenharmony_ci| ID| Error Message|
323e41f4b71Sopenharmony_ci| -------- | -------- |
324e41f4b71Sopenharmony_ci| 10200011 | The getFirst method cannot be bound. |
325e41f4b71Sopenharmony_ci
326e41f4b71Sopenharmony_ci**Example**
327e41f4b71Sopenharmony_ci
328e41f4b71Sopenharmony_ci```ts
329e41f4b71Sopenharmony_cilet deque: Deque<number> = new Deque();
330e41f4b71Sopenharmony_cideque.insertEnd(2);
331e41f4b71Sopenharmony_cideque.insertEnd(4);
332e41f4b71Sopenharmony_cideque.insertFront(5);
333e41f4b71Sopenharmony_cideque.insertFront(4);
334e41f4b71Sopenharmony_cilet result = deque.getFirst();
335e41f4b71Sopenharmony_ci```
336e41f4b71Sopenharmony_ci
337e41f4b71Sopenharmony_ci### getLast
338e41f4b71Sopenharmony_ci
339e41f4b71Sopenharmony_cigetLast(): T
340e41f4b71Sopenharmony_ci
341e41f4b71Sopenharmony_ciObtains the last element of this container.
342e41f4b71Sopenharmony_ci
343e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
344e41f4b71Sopenharmony_ci
345e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang
346e41f4b71Sopenharmony_ci
347e41f4b71Sopenharmony_ci**Return value**
348e41f4b71Sopenharmony_ci
349e41f4b71Sopenharmony_ci| Type| Description|
350e41f4b71Sopenharmony_ci| -------- | -------- |
351e41f4b71Sopenharmony_ci| T | Last element of the T type obtained.|
352e41f4b71Sopenharmony_ci
353e41f4b71Sopenharmony_ci**Error codes**
354e41f4b71Sopenharmony_ci
355e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md).
356e41f4b71Sopenharmony_ci
357e41f4b71Sopenharmony_ci| ID| Error Message|
358e41f4b71Sopenharmony_ci| -------- | -------- |
359e41f4b71Sopenharmony_ci| 10200011 | The getLast method cannot be bound. |
360e41f4b71Sopenharmony_ci
361e41f4b71Sopenharmony_ci**Example**
362e41f4b71Sopenharmony_ci
363e41f4b71Sopenharmony_ci```ts
364e41f4b71Sopenharmony_cilet deque: Deque<number> = new Deque();
365e41f4b71Sopenharmony_cideque.insertFront(2);
366e41f4b71Sopenharmony_cideque.insertFront(4);
367e41f4b71Sopenharmony_cideque.insertFront(5);
368e41f4b71Sopenharmony_cideque.insertFront(4);
369e41f4b71Sopenharmony_cilet result = deque.getLast();
370e41f4b71Sopenharmony_ci```
371e41f4b71Sopenharmony_ci
372e41f4b71Sopenharmony_ci### [Symbol.iterator]
373e41f4b71Sopenharmony_ci
374e41f4b71Sopenharmony_ci[Symbol.iterator]\(): IterableIterator&lt;T&gt;
375e41f4b71Sopenharmony_ci
376e41f4b71Sopenharmony_ciObtains an iterator, each item of which is a JavaScript object.
377e41f4b71Sopenharmony_ci
378e41f4b71Sopenharmony_ci> **NOTE**
379e41f4b71Sopenharmony_ci>
380e41f4b71Sopenharmony_ci> This API cannot be used in .ets files.
381e41f4b71Sopenharmony_ci
382e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
383e41f4b71Sopenharmony_ci
384e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang
385e41f4b71Sopenharmony_ci
386e41f4b71Sopenharmony_ci**Return value**
387e41f4b71Sopenharmony_ci
388e41f4b71Sopenharmony_ci| Type| Description|
389e41f4b71Sopenharmony_ci| -------- | -------- |
390e41f4b71Sopenharmony_ci| IterableIterator&lt;T&gt; | Iterator obtained.|
391e41f4b71Sopenharmony_ci
392e41f4b71Sopenharmony_ci**Error codes**
393e41f4b71Sopenharmony_ci
394e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md).
395e41f4b71Sopenharmony_ci
396e41f4b71Sopenharmony_ci| ID| Error Message|
397e41f4b71Sopenharmony_ci| -------- | -------- |
398e41f4b71Sopenharmony_ci| 10200011 | The Symbol.iterator method cannot be bound. |
399e41f4b71Sopenharmony_ci
400e41f4b71Sopenharmony_ci**Example**
401e41f4b71Sopenharmony_ci```ts
402e41f4b71Sopenharmony_cilet deque: Deque<number> = new Deque();
403e41f4b71Sopenharmony_cideque.insertFront(2);
404e41f4b71Sopenharmony_cideque.insertFront(4);
405e41f4b71Sopenharmony_cideque.insertFront(5);
406e41f4b71Sopenharmony_cideque.insertFront(4);
407e41f4b71Sopenharmony_ci
408e41f4b71Sopenharmony_ci// Method 1:
409e41f4b71Sopenharmony_cilet nums: Array<number> = Array.from(deque)
410e41f4b71Sopenharmony_cifor (let item of nums) {
411e41f4b71Sopenharmony_ci  console.log("value:" + item);
412e41f4b71Sopenharmony_ci}
413e41f4b71Sopenharmony_ci
414e41f4b71Sopenharmony_ci// Method 2:
415e41f4b71Sopenharmony_cilet iter = deque[Symbol.iterator]();
416e41f4b71Sopenharmony_cilet temp:IteratorResult<number> = iter.next();
417e41f4b71Sopenharmony_ciwhile(!temp.done) {
418e41f4b71Sopenharmony_ci  console.log("value:" + temp.value);
419e41f4b71Sopenharmony_ci  temp = iter.next();
420e41f4b71Sopenharmony_ci}
421e41f4b71Sopenharmony_ci```
422